KuaishouPromoterServiceImpl.java 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. package com.ruixuan.isc.service.impl;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.ruixuan.common.core.domain.AjaxResult;
  4. import com.ruixuan.common.core.domain.entity.SysUser;
  5. import com.ruixuan.common.utils.Check;
  6. import com.ruixuan.common.utils.DateUtils;
  7. import com.ruixuan.common.utils.RedisUtil;
  8. import com.ruixuan.common.utils.http.HttpUtil;
  9. import com.ruixuan.isc.entity.KuaishouPromoter;
  10. import com.ruixuan.isc.mapper.KuaishouPromoterMapper;
  11. import com.ruixuan.isc.service.IKuaishouPromoterService;
  12. import com.ruixuan.system.service.ISysDeptService;
  13. import com.ruixuan.system.service.ISysUserService;
  14. import lombok.extern.slf4j.Slf4j;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.beans.factory.annotation.Value;
  17. import org.springframework.stereotype.Service;
  18. import java.util.Arrays;
  19. import java.util.Date;
  20. import java.util.HashMap;
  21. import java.util.List;
  22. import java.util.Map;
  23. /**
  24. * 快手达人 信息Service业务层处理
  25. *
  26. * @author ruoyi
  27. * @date 2023-02-03
  28. */
  29. @Slf4j
  30. @Service
  31. public class KuaishouPromoterServiceImpl implements IKuaishouPromoterService {
  32. @Value("${promoter.start_ip_path}")
  33. private String startIpPath;
  34. @Value("${promoter.internal_ip_path}")
  35. private String internalIpPath;
  36. @Autowired
  37. private ISysUserService sysUserService;
  38. @Autowired
  39. private KuaishouPromoterMapper kuaishouPromoterMapper;
  40. @Autowired
  41. private ISysDeptService deptService;
  42. @Autowired
  43. private RedisUtil redisUtil;
  44. /**
  45. * 查询快手达人 信息列表
  46. *
  47. * @param kuaishouPromoter 快手达人 信息
  48. * @return 快手达人 信息
  49. */
  50. @Override
  51. public List<KuaishouPromoter> selectKuaishouPromoterList(Long userId, Long promoterId, String promoterNickName) {
  52. String roleKey = sysUserService.getRoleKeyByUserId(userId + "");
  53. List<Long> userList = null;
  54. //角色:供应链管理员、招商、招商经理可以看到所有的达人信息
  55. if (roleKey.contains("courtship") || "supplyChainAdmin".equals(roleKey)) {
  56. } else if ("bdManager".equals(roleKey) || "associationManager".equals(roleKey)) {
  57. // 渠道经理、社群经理 可以看到自己创建的以及自己部门人员的达人信息
  58. Long deptId = deptService.getDeptIdByUserId(userId);
  59. userList = deptService.getDeptUserListByDeptId(deptId);
  60. } else if ("bd".equals(roleKey) || "association".equals(roleKey)) {
  61. // 渠道、社群 可以看到自己创建的达人信息
  62. userList = Arrays.asList(userId);
  63. // } else {
  64. // return Collections.emptyList();
  65. }
  66. List<KuaishouPromoter> list = kuaishouPromoterMapper.selectKuaishouPromoterList(userList, promoterId, promoterNickName);
  67. return list;
  68. }
  69. /**
  70. * 查询快手达人 信息
  71. *
  72. * @param id 快手达人 信息主键
  73. * @return 快手达人 信息
  74. */
  75. @Override
  76. public JSONObject selectKuaishouPromoterById(Long id) {
  77. JSONObject data = new JSONObject();
  78. JSONObject result = null;
  79. try {
  80. KuaishouPromoter promoter = kuaishouPromoterMapper.selectKuaishouPromoterById(id);
  81. if (Check.isNotNull(promoter)) {
  82. Thread thread = new Thread() {
  83. @Override
  84. public void run() {
  85. try {
  86. // demo:PromoterId:1424128656
  87. editPromoter(promoter.getId(), promoter.getPromoterId());
  88. } catch (Exception e) {
  89. e.printStackTrace();
  90. }
  91. }
  92. };
  93. thread.start();
  94. Long startTime = System.currentTimeMillis();
  95. String content = HttpUtil.httpGetRequest(internalIpPath + "kuaiShou/promoter/getPromoterInfo?promoterId=" + promoter.getPromoterId());
  96. result = JSONObject.parseObject(content);
  97. log.info("获取达人详情数据,用时:{}s", (System.currentTimeMillis() - startTime) / 1000);
  98. data.put("promoterInfo", promoter);
  99. data.put("result", result);
  100. }
  101. } catch (Exception e) {
  102. e.printStackTrace();
  103. log.error("获取达人详情数据异常,{}", result);
  104. }
  105. return data;
  106. }
  107. /**
  108. * 新增快手达人 信息
  109. *
  110. * @param kuaishouPromoter 快手达人 信息
  111. */
  112. @Override
  113. public int insertKuaishouPromoter(KuaishouPromoter promoter) {
  114. KuaishouPromoter one = kuaishouPromoterMapper.getOneByIdAndPromoterId(promoter.getUserId(), promoter.getPromoterId());
  115. if (Check.isNotNull(one)) {
  116. return 0;
  117. }
  118. SysUser sysUser = sysUserService.selectUserById(promoter.getUserId());
  119. if (Check.isNotNull(sysUser)) {
  120. promoter.setUserName(sysUser.getNickName());
  121. }
  122. int i = kuaishouPromoterMapper.insertKuaishouPromoter(promoter);
  123. // demoPromoterId:1424128656
  124. editPromoter(promoter.getId(), promoter.getPromoterId());
  125. return i;
  126. }
  127. /**
  128. * 同步更新数据
  129. */
  130. private void editPromoter(Long id, Long promoterId) {
  131. try {
  132. /*缓存标记,每日第一次访问调用该接口,更新达人部分(昵称,省市,粉丝,总销售,头像等)数据*/
  133. String key = DateUtils.getDate() + "_" + id + "_" + promoterId;
  134. String value = (String) redisUtil.get(key);
  135. if (Check.isNotNull(value) && "1".equals(value)) {
  136. return;
  137. }
  138. redisUtil.set(key, "1", 60 * 60 * 24);
  139. /*更新达人数据*/
  140. Map<String, Object> param = new HashMap<>();
  141. param.put("promoterId", promoterId);
  142. Long startTime = System.currentTimeMillis();
  143. String content = HttpUtil.httpPostRequest(startIpPath + "promoterInfo/getPromoterId", param, null);
  144. JSONObject result = JSONObject.parseObject(content);
  145. log.info("更新达人信息,用时:{}s,返回结果:{}", (System.currentTimeMillis() - startTime) / 1000, result);
  146. if (Check.isNotNull(result)) {
  147. KuaishouPromoter kuaishouPromoter = new KuaishouPromoter(
  148. id, result.getString("promoterNickName"),
  149. result.getString("province").concat("-").concat(result.getString("city")),
  150. result.getString("promoterHeadImgUrl"),
  151. result.getString("fanNum"),
  152. result.getString("totalSale"));
  153. kuaishouPromoterMapper.updateKuaishouPromoter(kuaishouPromoter);
  154. }
  155. } catch (Exception e) {
  156. e.printStackTrace();
  157. log.error("更新达人信息异常", e);
  158. }
  159. }
  160. /**
  161. * 修改快手达人 信息
  162. *
  163. * @param kuaishouPromoter 快手达人 信息
  164. * @return 结果
  165. */
  166. @Override
  167. public int updateKuaishouPromoter(KuaishouPromoter kuaishouPromoter) {
  168. return kuaishouPromoterMapper.updateKuaishouPromoter(kuaishouPromoter);
  169. }
  170. /**
  171. * 批量删除快手达人 信息
  172. *
  173. * @param ids 需要删除的快手达人 信息主键
  174. * @return 结果
  175. */
  176. @Override
  177. public int deleteKuaishouPromoterByIds(Long[] ids) {
  178. return kuaishouPromoterMapper.deleteKuaishouPromoterByIds(ids);
  179. }
  180. /**
  181. * 删除快手达人 信息信息
  182. *
  183. * @param id 快手达人 信息主键
  184. * @return 结果
  185. */
  186. @Override
  187. public int deleteKuaishouPromoterById(Long id) {
  188. return kuaishouPromoterMapper.deleteKuaishouPromoterById(id);
  189. }
  190. @Override
  191. public AjaxResult getPromoterInfo(Long promoterId) {
  192. AjaxResult ajaxResult = null;
  193. try {
  194. KuaishouPromoter promoter = kuaishouPromoterMapper.getOneByIdAndPromoterId(null,promoterId);
  195. JSONObject data = new JSONObject();
  196. if (Check.isNotNull(promoter)) {
  197. Thread thread = new Thread() {
  198. @Override
  199. public void run() {
  200. try {
  201. editPromoter(promoter.getId(), promoter.getPromoterId());
  202. } catch (Exception e) {
  203. e.printStackTrace();
  204. }
  205. }
  206. };
  207. thread.start();
  208. Long startTime = System.currentTimeMillis();
  209. String content = HttpUtil.httpGetRequest(internalIpPath + "kuaiShou/promoter/getPromoterVideoInfo?promoterId=" + promoter.getPromoterId());
  210. JSONObject result = JSONObject.parseObject(content);
  211. log.info("获取达人视频销售数据,用时:{}s", (System.currentTimeMillis() - startTime) / 1000);
  212. String start = DateUtils.getSubtractTime(new Date(), 31);
  213. String end = DateUtils.getDate();
  214. JSONObject info = kuaishouPromoterMapper.getNearlyMonthGmv(promoter.getPromoterId(), start, end);
  215. if (Check.isNotNull(info)) {
  216. data.put("orderAmount", info.getString("orderAmount"));
  217. data.put("operationCompletionRate", info.getString("operationCompletionRate"));
  218. }
  219. if (Check.isNotNull(result)) {
  220. data.put("avgVideoSales", result.getString("avgVideoSales"));
  221. data.put("videoSales", result.getString("videoSales"));
  222. }
  223. data.put("promoterId", promoter.getPromoterId());
  224. data.put("promoterUrl", promoter.getPromoterUrl());
  225. }
  226. ajaxResult = new AjaxResult(200, "查询成功", data);
  227. } catch (Exception e) {
  228. e.printStackTrace();
  229. log.error("获取达人详情数据异常");
  230. ajaxResult = new AjaxResult(500, "查询失败");
  231. }
  232. return ajaxResult;
  233. }
  234. }