KuaishouItemCollectSamplesController.java 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378
  1. package com.ruixuan.isc.controller;
  2. import java.util.Date;
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.Map;
  6. import javax.servlet.http.HttpServletRequest;
  7. import com.alibaba.fastjson.JSONArray;
  8. import com.alibaba.fastjson.JSONObject;
  9. import com.google.gson.Gson;
  10. import com.kuaidi100.sdk.api.Subscribe;
  11. import com.kuaidi100.sdk.contant.ApiInfoConstant;
  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.entity.KuaishouItemCollectSampleLog;
  27. import com.ruixuan.isc.enums.CompanyEnum;
  28. import com.ruixuan.isc.service.IKuaishouItemCollectSamplesService;
  29. import com.ruixuan.system.service.ISysDeptService;
  30. import com.ruixuan.system.service.ISysRoleService;
  31. import com.ruixuan.system.service.ISysUserService;
  32. import lombok.extern.slf4j.Slf4j;
  33. import org.springframework.security.access.prepost.PreAuthorize;
  34. import org.springframework.beans.factory.annotation.Autowired;
  35. import org.springframework.web.bind.annotation.GetMapping;
  36. import org.springframework.web.bind.annotation.PostMapping;
  37. import org.springframework.web.bind.annotation.PutMapping;
  38. import org.springframework.web.bind.annotation.DeleteMapping;
  39. import org.springframework.web.bind.annotation.PathVariable;
  40. import org.springframework.web.bind.annotation.RequestBody;
  41. import org.springframework.web.bind.annotation.RequestMapping;
  42. import org.springframework.web.bind.annotation.RestController;
  43. /**
  44. * 【商品领样】Controller
  45. *
  46. * @author ruoyi
  47. * @date 2023-02-08
  48. */
  49. @RestController
  50. @Slf4j
  51. @RequestMapping("/itemCollectSamples")
  52. public class KuaishouItemCollectSamplesController extends BaseController {
  53. @Autowired
  54. private IKuaishouItemCollectSamplesService kuaishouItemCollectSamplesService;
  55. @Autowired
  56. private ISysRoleService sysRoleService;
  57. @Autowired
  58. private ISysDeptService sysDeptService;
  59. @Autowired
  60. private ISysUserService sysUserService;
  61. /**
  62. * 查询【请填写功能名称】列表
  63. */
  64. @GetMapping("/list")
  65. public TableDataInfo list(Long itemId, Long promoterId, Long userId, Integer collectSampleStatus) {
  66. TableDataInfo tableDataInfo = new TableDataInfo();
  67. try {
  68. Map<String, Object> requestMap = new HashMap<>();
  69. if (!Check.isNull(userId)) {
  70. String roleId = sysRoleService.getRoleBYUserId(userId);
  71. if (roleId.equals("courtshipManager") || roleId.equals("bdManager") || roleId.equals("associationManager")) { // 经理层级查看部门下所有数据
  72. Long deptId = sysDeptService.getDeptIdByUserId(userId);
  73. List<Long> userIds = sysDeptService.getDeptUserListByDeptId(deptId);
  74. if (roleId.equals("bdManager") || roleId.equals("associationManager")) {
  75. requestMap.put("collectSampleIds", userIds);
  76. } else {
  77. requestMap.put("itemCreateIds", userIds);
  78. }
  79. } else if (roleId.equals("association") || roleId.equals("bd")) { // 社群和bd查看申请人为自己的领样信息
  80. requestMap.put("collectSampleId", userId);
  81. } else if (roleId.equals("courtship")) { // 招商查看创建人为自己的领样信息
  82. requestMap.put("itemCreateId", userId);
  83. }
  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. KuaishouItemCollectSampleLog sampleLog = new KuaishouItemCollectSampleLog();
  178. sampleLog.setUserId(kuaishouItemCollectSamples.getUserId());
  179. sampleLog.setUserName(kuaishouItemCollectSamples.getUserName());
  180. sampleLog.setSampleId(id);
  181. Integer collectSampleStatus = kuaishouItemCollectSamples.getCollectSampleStatus();
  182. if (!Check.isNull(collectSampleStatus)) {
  183. sampleLog.setCollectSampleStatus(collectSampleStatus);
  184. if (collectSampleStatus == 2) {
  185. String collectSampleDesc = kuaishouItemCollectSamples.getCollectSampleDesc();
  186. if (Check.isNull(collectSampleDesc)) {
  187. kuaishouItemCollectSamples.setCollectSampleDesc("领样审核拒绝");
  188. }
  189. }
  190. if (collectSampleStatus == 3) {
  191. kuaishouItemCollectSamples.setCollectSampleDesc("待录入订单号");
  192. }
  193. if (collectSampleStatus == 5) { // 招商审核作业拒绝
  194. String collectSampleDesc = kuaishouItemCollectSamples.getCollectSampleDesc();
  195. if (Check.isNull(collectSampleDesc)) {
  196. kuaishouItemCollectSamples.setCollectSampleDesc("招商审核作业拒绝,请重新提交");
  197. }
  198. kuaishouItemCollectSamplesService.cleanLogs(kuaishouItemCollectSamples.getId(), 6);
  199. }
  200. if (collectSampleStatus == 7) { // 作业完成
  201. kuaishouItemCollectSamples.setCollectSampleDesc("作业已完成");
  202. }
  203. }
  204. String courierNumber = kuaishouItemCollectSamples.getCourierNumber();
  205. if (!Check.isNull(courierNumber)) {
  206. sampleLog.setCollectSampleStatus(4);
  207. kuaishouItemCollectSamples.setCollectSampleStatus(4);
  208. kuaishouItemCollectSamples.setCollectSampleDesc("商品已发货");
  209. // 调用快递接口
  210. kuaishouItemCollectSamplesService.subscribe(id, courierNumber, kuaishouItemCollectSamples.getCompanyCode());
  211. }
  212. String taskFileUrl = kuaishouItemCollectSamples.getTaskFileUrl();
  213. if (!Check.isNull(taskFileUrl)) { // 作业上传成功
  214. sampleLog.setCollectSampleStatus(6);
  215. kuaishouItemCollectSamples.setCollectSampleStatus(6);
  216. kuaishouItemCollectSamples.setCollectSampleDesc("作业上传成功,待招商审核");
  217. }
  218. int i = kuaishouItemCollectSamplesService.updateKuaishouItemCollectSamples(kuaishouItemCollectSamples);
  219. if (i > 0) {
  220. sampleLog.setCreateTime(new Date());
  221. sampleLog.setUpdateTime(new Date());
  222. kuaishouItemCollectSamplesService.insertLog(sampleLog);
  223. }
  224. returnJson.put("code", 0);
  225. returnJson.put("message", "修改成功");
  226. } catch (Exception e) {
  227. e.printStackTrace();
  228. returnJson.put("code", -1);
  229. returnJson.put("message", e.getMessage());
  230. }
  231. return returnJson;
  232. }
  233. @GetMapping("/detail")
  234. public JSONObject detail(Long id) {
  235. JSONObject returnJson = new JSONObject();
  236. try {
  237. if (Check.isNull(id)) {
  238. throw new Exception("id不能为空");
  239. }
  240. returnJson = kuaishouItemCollectSamplesService.getDetail(id);
  241. returnJson.put("code", 0);
  242. returnJson.put("message", "查询成功");
  243. } catch (Exception e) {
  244. e.printStackTrace();
  245. returnJson.put("code", -1);
  246. returnJson.put("message", e.getMessage());
  247. }
  248. return returnJson;
  249. }
  250. @GetMapping("/courierNumberInfo")
  251. public JSONObject courierNumberInfo(String courierNumber) {
  252. JSONObject returnJson = new JSONObject();
  253. try {
  254. if (Check.isNull(courierNumber)) {
  255. throw new Exception("快递单号不能为空");
  256. }
  257. returnJson = kuaishouItemCollectSamplesService.courierNumberInfo(courierNumber);
  258. returnJson.put("code", 0);
  259. returnJson.put("message", "查询成功");
  260. } catch (Exception e) {
  261. e.printStackTrace();
  262. returnJson.put("code", -1);
  263. returnJson.put("message", e.getMessage());
  264. }
  265. return returnJson;
  266. }
  267. @PutMapping("/testSubscribe")
  268. public JSONObject testSubscribe(String phone, String courierNumber, String code) {
  269. JSONObject returnJson = new JSONObject();
  270. try {
  271. SubscribeParameters subscribeParameters = new SubscribeParameters();
  272. subscribeParameters.setCallbackurl("http://ruixuan.api.tjyourong.com.cn/itemCollectSamples/callback");
  273. subscribeParameters.setPhone(phone);
  274. SubscribeParam subscribeParam = new SubscribeParam();
  275. subscribeParam.setParameters(subscribeParameters);
  276. subscribeParam.setCompany(code);
  277. subscribeParam.setNumber(courierNumber);
  278. subscribeParam.setKey("BPEQUJxB9244");
  279. SubscribeReq subscribeReq = new SubscribeReq();
  280. subscribeReq.setSchema(ApiInfoConstant.SUBSCRIBE_SCHEMA);
  281. subscribeReq.setParam(new Gson().toJson(subscribeParam));
  282. IBaseClient subscribe = new Subscribe();
  283. JSONObject jsonObject = JSONObject.parseObject(subscribe.execute(subscribeReq).getBody());
  284. System.err.println(jsonObject);
  285. System.out.println(subscribe.execute(subscribeReq));
  286. returnJson.put("code", 0);
  287. returnJson.put("message", "调用成功");
  288. } catch (Exception e) {
  289. e.printStackTrace();
  290. returnJson.put("code", -1);
  291. returnJson.put("message", e.getMessage());
  292. }
  293. return returnJson;
  294. }
  295. @PostMapping("/callback")
  296. public SubscribeResp callback(HttpServletRequest request) {
  297. SubscribeResp subscribeResp = new SubscribeResp();
  298. try {
  299. String param = request.getParameter("param");
  300. log.info("快递回调信息:{}", param);
  301. JSONObject paramJson = JSONObject.parseObject(param);
  302. if (Check.isNull(paramJson)) {
  303. throw new Exception("回调信息为空");
  304. }
  305. JSONObject lastResult = paramJson.getJSONObject("lastResult");
  306. if (!Check.isNull(lastResult)) {
  307. String state = lastResult.getString("state");
  308. String nu = lastResult.getString("nu");
  309. String com = lastResult.getString("com");
  310. if ("3".equals(state)) {
  311. Integer status = kuaishouItemCollectSamplesService.getStatusByCourierNumbe(nu);
  312. if (status < 5) { // 防止快递重复回调
  313. KuaishouItemCollectSamples updateSample = new KuaishouItemCollectSamples();
  314. updateSample.setCourierNumber(nu);
  315. updateSample.setCollectSampleStatus(5);
  316. updateSample.setCollectSampleDesc("快递已签收,待上传作业");
  317. kuaishouItemCollectSamplesService.updateByNum(updateSample);
  318. }
  319. }
  320. JSONArray data = lastResult.getJSONArray("data");
  321. KuaishouItemCollectSampleExpress express = new KuaishouItemCollectSampleExpress();
  322. express.setCourierNumber(nu);
  323. express.setCom(com);
  324. express.setState(state);
  325. if (!Check.isNull(data)) {
  326. express.setExpressData(data.toJSONString());
  327. }
  328. kuaishouItemCollectSamplesService.replaceExpress(express);
  329. }
  330. subscribeResp.setResult(Boolean.TRUE);
  331. subscribeResp.setReturnCode("200");
  332. subscribeResp.setMessage("回调成功");
  333. } catch (Exception e) {
  334. e.printStackTrace();
  335. subscribeResp.setResult(Boolean.FALSE);
  336. subscribeResp.setReturnCode("-1");
  337. subscribeResp.setMessage(e.getMessage());
  338. }
  339. return subscribeResp;
  340. }
  341. /**
  342. * 删除【请填写功能名称】
  343. */
  344. @PreAuthorize("@ss.hasPermi('system:samples:remove')")
  345. @Log(title = "【请填写功能名称】", businessType = BusinessType.DELETE)
  346. @DeleteMapping("/{ids}")
  347. public AjaxResult remove(@PathVariable Long[] ids) {
  348. return toAjax(kuaishouItemCollectSamplesService.deleteKuaishouItemCollectSamplesByIds(ids));
  349. }
  350. }