KuaishouItemCollectSamplesController.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331
  1. package com.ruixuan.isc.controller;
  2. import java.util.HashMap;
  3. import java.util.List;
  4. import java.util.Map;
  5. import javax.servlet.http.HttpServletRequest;
  6. import com.alibaba.fastjson.JSONArray;
  7. import com.alibaba.fastjson.JSONObject;
  8. import com.google.gson.Gson;
  9. import com.kuaidi100.sdk.api.Subscribe;
  10. import com.kuaidi100.sdk.contant.ApiInfoConstant;
  11. import com.kuaidi100.sdk.contant.CompanyConstant;
  12. import com.kuaidi100.sdk.core.IBaseClient;
  13. import com.kuaidi100.sdk.request.SubscribeParam;
  14. import com.kuaidi100.sdk.request.SubscribeParameters;
  15. import com.kuaidi100.sdk.request.SubscribeReq;
  16. import com.kuaidi100.sdk.response.SubscribeResp;
  17. import com.ruixuan.common.annotation.Log;
  18. import com.ruixuan.common.core.controller.BaseController;
  19. import com.ruixuan.common.core.domain.AjaxResult;
  20. import com.ruixuan.common.core.domain.entity.SysUser;
  21. import com.ruixuan.common.core.page.TableDataInfo;
  22. import com.ruixuan.common.enums.BusinessType;
  23. import com.ruixuan.common.utils.Check;
  24. import com.ruixuan.isc.entity.KuaishouItemCollectSampleExpress;
  25. import com.ruixuan.isc.entity.KuaishouItemCollectSamples;
  26. import com.ruixuan.isc.enums.CompanyEnum;
  27. import com.ruixuan.isc.service.IKuaishouItemCollectSamplesService;
  28. import com.ruixuan.system.service.ISysDeptService;
  29. import com.ruixuan.system.service.ISysRoleService;
  30. import com.ruixuan.system.service.ISysUserService;
  31. import lombok.extern.slf4j.Slf4j;
  32. import org.springframework.security.access.prepost.PreAuthorize;
  33. import org.springframework.beans.factory.annotation.Autowired;
  34. import org.springframework.web.bind.annotation.GetMapping;
  35. import org.springframework.web.bind.annotation.PostMapping;
  36. import org.springframework.web.bind.annotation.PutMapping;
  37. import org.springframework.web.bind.annotation.DeleteMapping;
  38. import org.springframework.web.bind.annotation.PathVariable;
  39. import org.springframework.web.bind.annotation.RequestBody;
  40. import org.springframework.web.bind.annotation.RequestMapping;
  41. import org.springframework.web.bind.annotation.RestController;
  42. /**
  43. * 【商品领样】Controller
  44. *
  45. * @author ruoyi
  46. * @date 2023-02-08
  47. */
  48. @RestController
  49. @Slf4j
  50. @RequestMapping("/itemCollectSamples")
  51. public class KuaishouItemCollectSamplesController extends BaseController {
  52. @Autowired
  53. private IKuaishouItemCollectSamplesService kuaishouItemCollectSamplesService;
  54. @Autowired
  55. private ISysRoleService sysRoleService;
  56. @Autowired
  57. private ISysDeptService sysDeptService;
  58. @Autowired
  59. private ISysUserService sysUserService;
  60. /**
  61. * 查询【请填写功能名称】列表
  62. */
  63. @GetMapping("/list")
  64. public TableDataInfo list(Long itemId, Long promoterId, Long userId, Integer collectSampleStatus) {
  65. TableDataInfo tableDataInfo = new TableDataInfo();
  66. try {
  67. Map<String, Object> requestMap = new HashMap<>();
  68. if (Check.isNull(userId)) {
  69. throw new Exception("请传入登录人ID");
  70. }
  71. String roleId = sysRoleService.getRoleBYUserId(userId);
  72. if (roleId.equals("courtshipManager") || roleId.equals("bdManager") || roleId.equals("associationManager")) { // 经理层级查看部门下所有数据
  73. Long deptId = sysDeptService.getDeptIdByUserId(userId);
  74. List<Long> userIds = sysDeptService.getDeptUserListByDeptId(deptId);
  75. if (roleId.equals("bdManager") || roleId.equals("associationManager")) {
  76. requestMap.put("collectSampleIds", userIds);
  77. } else {
  78. requestMap.put("itemCreateIds", userIds);
  79. }
  80. } else if (roleId.equals("association") || roleId.equals("bd")) { // 社群和bd查看申请人为自己的领样信息
  81. requestMap.put("collectSampleId", userId);
  82. } else if (roleId.equals("courtship")) { // 招商查看创建人为自己的领样信息
  83. requestMap.put("itemCreateId", userId);
  84. }
  85. if (!Check.isNull(itemId)) {
  86. requestMap.put("itemId", itemId);
  87. }
  88. if (!Check.isNull(promoterId)) {
  89. requestMap.put("promoterId", promoterId);
  90. }
  91. if (!Check.isNull(collectSampleStatus)) {
  92. requestMap.put("collectSampleStatus", collectSampleStatus);
  93. }
  94. startPage();
  95. List<KuaishouItemCollectSamples> list = kuaishouItemCollectSamplesService.selectKuaishouItemCollectSamplesList(requestMap);
  96. return getDataTable(list);
  97. } catch (Exception e) {
  98. e.printStackTrace();
  99. tableDataInfo.setCode(-1);
  100. tableDataInfo.setMsg(e.getMessage());
  101. }
  102. return tableDataInfo;
  103. }
  104. /**
  105. * 领样预览
  106. */
  107. @PostMapping("/preview")
  108. public JSONObject preview(@RequestBody JSONObject requestJson) {
  109. JSONObject returnJson = new JSONObject();
  110. try {
  111. Long userId = requestJson.getLong("userId");
  112. if (Check.isNull(userId)) {
  113. throw new Exception("请传入当前登录人ID");
  114. }
  115. SysUser sysUser = sysUserService.selectUserById(userId);
  116. if (Check.isNull(sysUser)) {
  117. throw new Exception("未获取到登录人信息");
  118. }
  119. JSONArray itemIds = requestJson.getJSONArray("itemIds");
  120. if (Check.isNull(itemIds)) {
  121. throw new Exception("请传入需要申请的商品列表");
  122. }
  123. JSONArray promoterIds = requestJson.getJSONArray("promoterIds");
  124. if (Check.isNull(promoterIds)) {
  125. throw new Exception("请传入需要申请的达人列表");
  126. }
  127. JSONObject previewJson = kuaishouItemCollectSamplesService.preview(userId, sysUser.getNickName(), itemIds, promoterIds);
  128. returnJson.put("code", 0);
  129. returnJson.put("message", "success");
  130. returnJson.put("preview", previewJson);
  131. } catch (Exception e) {
  132. e.printStackTrace();
  133. returnJson.put("code", -1);
  134. returnJson.put("message", e.getMessage());
  135. }
  136. return returnJson;
  137. }
  138. /**
  139. * 新增【请填写功能名称】
  140. */
  141. @PostMapping("/add")
  142. public JSONObject add(@RequestBody JSONObject requestJson) {
  143. JSONObject returnJson = new JSONObject();
  144. try {
  145. if (Check.isNull(requestJson)) {
  146. throw new Exception("入参不能为空");
  147. }
  148. JSONArray temCollectSamples = requestJson.getJSONArray("temCollectSamples");
  149. if (Check.isNull(temCollectSamples)) {
  150. throw new Exception("认领信息不能为空");
  151. }
  152. kuaishouItemCollectSamplesService.batchAdd(temCollectSamples);
  153. returnJson.put("code", 0);
  154. returnJson.put("message", "领样信息增加成功");
  155. } catch (Exception e) {
  156. e.printStackTrace();
  157. returnJson.put("code", -1);
  158. returnJson.put("message", e.getMessage());
  159. }
  160. return returnJson;
  161. }
  162. @GetMapping("/getCompany")
  163. public List<JSONObject> getCompany() {
  164. return CompanyEnum.companyList();
  165. }
  166. /**
  167. * 修改【请填写功能名称】
  168. */
  169. @PutMapping("/edit")
  170. public JSONObject edit(@RequestBody KuaishouItemCollectSamples kuaishouItemCollectSamples) {
  171. JSONObject returnJson = new JSONObject();
  172. try {
  173. Long id = kuaishouItemCollectSamples.getId();
  174. if (Check.isNull(id)) {
  175. throw new Exception("id不能为空");
  176. }
  177. Integer collectSampleStatus = kuaishouItemCollectSamples.getCollectSampleStatus();
  178. if (!Check.isNull(collectSampleStatus)) {
  179. if (collectSampleStatus == 2) {
  180. String collectSampleDesc = kuaishouItemCollectSamples.getCollectSampleDesc();
  181. if (Check.isNull(collectSampleDesc)) {
  182. kuaishouItemCollectSamples.setCollectSampleDesc("领样审核拒绝");
  183. }
  184. }
  185. if (collectSampleStatus == 3) {
  186. kuaishouItemCollectSamples.setCollectSampleDesc("待录入订单号");
  187. }
  188. if (collectSampleStatus == 5) { // 招商审核作业拒绝
  189. String collectSampleDesc = kuaishouItemCollectSamples.getCollectSampleDesc();
  190. if (Check.isNull(collectSampleDesc)) {
  191. kuaishouItemCollectSamples.setCollectSampleDesc("招商审核作业拒绝,请重新提交");
  192. }
  193. }
  194. if (collectSampleStatus == 7) { // 作业完成
  195. kuaishouItemCollectSamples.setCollectSampleDesc("作业已完成");
  196. }
  197. }
  198. String courierNumber = kuaishouItemCollectSamples.getCourierNumber();
  199. if (!Check.isNull(courierNumber)) {
  200. kuaishouItemCollectSamples.setCollectSampleStatus(4);
  201. kuaishouItemCollectSamples.setCollectSampleDesc("商品已发货");
  202. // 调用快递接口
  203. kuaishouItemCollectSamplesService.subscribe(id, courierNumber, kuaishouItemCollectSamples.getCompanyCode());
  204. }
  205. String taskFileUrl = kuaishouItemCollectSamples.getTaskFileUrl();
  206. if (Check.isNull(taskFileUrl)) { // 作业上传成功
  207. kuaishouItemCollectSamples.setCollectSampleStatus(6);
  208. kuaishouItemCollectSamples.setCollectSampleDesc("作业上传成功,待招商审核");
  209. }
  210. kuaishouItemCollectSamplesService.updateKuaishouItemCollectSamples(kuaishouItemCollectSamples);
  211. returnJson.put("code", 0);
  212. returnJson.put("message", "修改成功");
  213. } catch (Exception e) {
  214. e.printStackTrace();
  215. returnJson.put("code", -1);
  216. returnJson.put("message", e.getMessage());
  217. }
  218. return returnJson;
  219. }
  220. @PutMapping("/testSubscribe")
  221. public JSONObject testSubscribe(String phone, String courierNumber) {
  222. JSONObject returnJson = new JSONObject();
  223. try {
  224. SubscribeParameters subscribeParameters = new SubscribeParameters();
  225. subscribeParameters.setCallbackurl("http://ruixuan.api.tjyourong.com.cn/itemCollectSamples/callback");
  226. subscribeParameters.setPhone(phone);
  227. SubscribeParam subscribeParam = new SubscribeParam();
  228. subscribeParam.setParameters(subscribeParameters);
  229. subscribeParam.setCompany(CompanyConstant.YD);
  230. subscribeParam.setNumber(courierNumber);
  231. subscribeParam.setKey("BPEQUJxB9244");
  232. SubscribeReq subscribeReq = new SubscribeReq();
  233. subscribeReq.setSchema(ApiInfoConstant.SUBSCRIBE_SCHEMA);
  234. subscribeReq.setParam(new Gson().toJson(subscribeParam));
  235. IBaseClient subscribe = new Subscribe();
  236. JSONObject jsonObject = JSONObject.parseObject(subscribe.execute(subscribeReq).getBody());
  237. System.err.println(jsonObject);
  238. System.out.println(subscribe.execute(subscribeReq));
  239. returnJson.put("code", 0);
  240. returnJson.put("message", "调用成功");
  241. } catch (Exception e) {
  242. e.printStackTrace();
  243. returnJson.put("code", -1);
  244. returnJson.put("message", e.getMessage());
  245. }
  246. return returnJson;
  247. }
  248. @PostMapping("/callback")
  249. public SubscribeResp callback(HttpServletRequest request) {
  250. SubscribeResp subscribeResp = new SubscribeResp();
  251. try {
  252. String param = request.getParameter("param");
  253. log.info("快递回调信息:{}", param);
  254. JSONObject paramJson = JSONObject.parseObject(param);
  255. if (Check.isNull(paramJson)) {
  256. throw new Exception("回调信息为空");
  257. }
  258. JSONObject lastResult = paramJson.getJSONObject("lastResult");
  259. if (!Check.isNull(lastResult)) {
  260. String state = lastResult.getString("state");
  261. String nu = lastResult.getString("nu");
  262. String com = lastResult.getString("com");
  263. if ("3".equals(state)) {
  264. KuaishouItemCollectSamples updateSample = new KuaishouItemCollectSamples();
  265. updateSample.setCourierNumber(nu);
  266. updateSample.setCollectSampleStatus(5);
  267. updateSample.setCollectSampleDesc("快递已签收,待上传作业");
  268. // kuaishouItemCollectSamplesService.updateByNum(updateSample);
  269. }
  270. JSONArray data = lastResult.getJSONArray("data");
  271. KuaishouItemCollectSampleExpress express = new KuaishouItemCollectSampleExpress();
  272. express.setCourierNumber(nu);
  273. express.setCom(com);
  274. express.setState(state);
  275. if (!Check.isNull(data)) {
  276. express.setExpressData(data.toJSONString());
  277. }
  278. kuaishouItemCollectSamplesService.replaceExpress(express);
  279. }
  280. subscribeResp.setResult(Boolean.TRUE);
  281. subscribeResp.setReturnCode("200");
  282. subscribeResp.setMessage("回调成功");
  283. } catch (Exception e) {
  284. e.printStackTrace();
  285. subscribeResp.setResult(Boolean.FALSE);
  286. subscribeResp.setReturnCode("-1");
  287. subscribeResp.setMessage(e.getMessage());
  288. }
  289. return subscribeResp;
  290. }
  291. /**
  292. * 删除【请填写功能名称】
  293. */
  294. @PreAuthorize("@ss.hasPermi('system:samples:remove')")
  295. @Log(title = "【请填写功能名称】", businessType = BusinessType.DELETE)
  296. @DeleteMapping("/{ids}")
  297. public AjaxResult remove(@PathVariable Long[] ids) {
  298. return toAjax(kuaishouItemCollectSamplesService.deleteKuaishouItemCollectSamplesByIds(ids));
  299. }
  300. }