package com.ruixuan.isc.controller; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.google.gson.Gson; import com.kuaidi100.sdk.api.Subscribe; import com.kuaidi100.sdk.contant.ApiInfoConstant; import com.kuaidi100.sdk.contant.CompanyConstant; import com.kuaidi100.sdk.core.IBaseClient; import com.kuaidi100.sdk.request.SubscribeParam; import com.kuaidi100.sdk.request.SubscribeParameters; import com.kuaidi100.sdk.request.SubscribeReq; import com.kuaidi100.sdk.response.SubscribeResp; import com.ruixuan.common.annotation.Log; import com.ruixuan.common.core.controller.BaseController; import com.ruixuan.common.core.domain.AjaxResult; import com.ruixuan.common.core.domain.entity.SysUser; import com.ruixuan.common.core.page.TableDataInfo; import com.ruixuan.common.enums.BusinessType; import com.ruixuan.common.utils.Check; import com.ruixuan.isc.entity.KuaishouItemCollectSampleExpress; import com.ruixuan.isc.entity.KuaishouItemCollectSamples; import com.ruixuan.isc.enums.CompanyEnum; import com.ruixuan.isc.service.IKuaishouItemCollectSamplesService; import com.ruixuan.system.service.ISysDeptService; import com.ruixuan.system.service.ISysRoleService; import com.ruixuan.system.service.ISysUserService; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * 【商品领样】Controller * * @author ruoyi * @date 2023-02-08 */ @RestController @Slf4j @RequestMapping("/itemCollectSamples") public class KuaishouItemCollectSamplesController extends BaseController { @Autowired private IKuaishouItemCollectSamplesService kuaishouItemCollectSamplesService; @Autowired private ISysRoleService sysRoleService; @Autowired private ISysDeptService sysDeptService; @Autowired private ISysUserService sysUserService; /** * 查询【请填写功能名称】列表 */ @GetMapping("/list") public TableDataInfo list(Long itemId, Long promoterId, Long userId, Integer collectSampleStatus) { TableDataInfo tableDataInfo = new TableDataInfo(); try { Map requestMap = new HashMap<>(); if (Check.isNull(userId)) { throw new Exception("请传入登录人ID"); } String roleId = sysRoleService.getRoleBYUserId(userId); if (roleId.equals("courtshipManager") || roleId.equals("bdManager") || roleId.equals("associationManager")) { // 经理层级查看部门下所有数据 Long deptId = sysDeptService.getDeptIdByUserId(userId); List userIds = sysDeptService.getDeptUserListByDeptId(deptId); if (roleId.equals("bdManager") || roleId.equals("associationManager")) { requestMap.put("collectSampleIds", userIds); } else { requestMap.put("itemCreateIds", userIds); } } else if (roleId.equals("association") || roleId.equals("bd")) { // 社群和bd查看申请人为自己的领样信息 requestMap.put("collectSampleId", userId); } else if (roleId.equals("courtship")) { // 招商查看创建人为自己的领样信息 requestMap.put("itemCreateId", userId); } if (!Check.isNull(itemId)) { requestMap.put("itemId", itemId); } if (!Check.isNull(promoterId)) { requestMap.put("promoterId", promoterId); } if (!Check.isNull(collectSampleStatus)) { requestMap.put("collectSampleStatus", collectSampleStatus); } startPage(); List list = kuaishouItemCollectSamplesService.selectKuaishouItemCollectSamplesList(requestMap); return getDataTable(list); } catch (Exception e) { e.printStackTrace(); tableDataInfo.setCode(-1); tableDataInfo.setMsg(e.getMessage()); } return tableDataInfo; } /** * 领样预览 */ @PostMapping("/preview") public JSONObject preview(@RequestBody JSONObject requestJson) { JSONObject returnJson = new JSONObject(); try { Long userId = requestJson.getLong("userId"); if (Check.isNull(userId)) { throw new Exception("请传入当前登录人ID"); } SysUser sysUser = sysUserService.selectUserById(userId); if (Check.isNull(sysUser)) { throw new Exception("未获取到登录人信息"); } JSONArray itemIds = requestJson.getJSONArray("itemIds"); if (Check.isNull(itemIds)) { throw new Exception("请传入需要申请的商品列表"); } JSONArray promoterIds = requestJson.getJSONArray("promoterIds"); if (Check.isNull(promoterIds)) { throw new Exception("请传入需要申请的达人列表"); } JSONObject previewJson = kuaishouItemCollectSamplesService.preview(userId, sysUser.getNickName(), itemIds, promoterIds); returnJson.put("code", 0); returnJson.put("message", "success"); returnJson.put("preview", previewJson); } catch (Exception e) { e.printStackTrace(); returnJson.put("code", -1); returnJson.put("message", e.getMessage()); } return returnJson; } /** * 新增【请填写功能名称】 */ @PostMapping("/add") public JSONObject add(@RequestBody JSONObject requestJson) { JSONObject returnJson = new JSONObject(); try { if (Check.isNull(requestJson)) { throw new Exception("入参不能为空"); } JSONArray temCollectSamples = requestJson.getJSONArray("temCollectSamples"); if (Check.isNull(temCollectSamples)) { throw new Exception("认领信息不能为空"); } kuaishouItemCollectSamplesService.batchAdd(temCollectSamples); returnJson.put("code", 0); returnJson.put("message", "领样信息增加成功"); } catch (Exception e) { e.printStackTrace(); returnJson.put("code", -1); returnJson.put("message", e.getMessage()); } return returnJson; } @GetMapping("/getCompany") public List getCompany() { return CompanyEnum.companyList(); } /** * 修改【请填写功能名称】 */ @PutMapping("/edit") public JSONObject edit(@RequestBody KuaishouItemCollectSamples kuaishouItemCollectSamples) { JSONObject returnJson = new JSONObject(); try { Long id = kuaishouItemCollectSamples.getId(); if (Check.isNull(id)) { throw new Exception("id不能为空"); } Integer collectSampleStatus = kuaishouItemCollectSamples.getCollectSampleStatus(); if (!Check.isNull(collectSampleStatus)) { if (collectSampleStatus == 2) { String collectSampleDesc = kuaishouItemCollectSamples.getCollectSampleDesc(); if (Check.isNull(collectSampleDesc)) { kuaishouItemCollectSamples.setCollectSampleDesc("领样审核拒绝"); } } if (collectSampleStatus == 3) { kuaishouItemCollectSamples.setCollectSampleDesc("待录入订单号"); } if (collectSampleStatus == 5) { // 招商审核作业拒绝 String collectSampleDesc = kuaishouItemCollectSamples.getCollectSampleDesc(); if (Check.isNull(collectSampleDesc)) { kuaishouItemCollectSamples.setCollectSampleDesc("招商审核作业拒绝,请重新提交"); } } if (collectSampleStatus == 7) { // 作业完成 kuaishouItemCollectSamples.setCollectSampleDesc("作业已完成"); } } String courierNumber = kuaishouItemCollectSamples.getCourierNumber(); if (!Check.isNull(courierNumber)) { kuaishouItemCollectSamples.setCollectSampleStatus(4); kuaishouItemCollectSamples.setCollectSampleDesc("商品已发货"); // 调用快递接口 kuaishouItemCollectSamplesService.subscribe(id, courierNumber, kuaishouItemCollectSamples.getCompanyCode()); } String taskFileUrl = kuaishouItemCollectSamples.getTaskFileUrl(); if (Check.isNull(taskFileUrl)) { // 作业上传成功 kuaishouItemCollectSamples.setCollectSampleStatus(6); kuaishouItemCollectSamples.setCollectSampleDesc("作业上传成功,待招商审核"); } kuaishouItemCollectSamplesService.updateKuaishouItemCollectSamples(kuaishouItemCollectSamples); returnJson.put("code", 0); returnJson.put("message", "修改成功"); } catch (Exception e) { e.printStackTrace(); returnJson.put("code", -1); returnJson.put("message", e.getMessage()); } return returnJson; } @PutMapping("/testSubscribe") public JSONObject testSubscribe(String phone, String courierNumber) { JSONObject returnJson = new JSONObject(); try { SubscribeParameters subscribeParameters = new SubscribeParameters(); subscribeParameters.setCallbackurl("http://ruixuan.api.tjyourong.com.cn/itemCollectSamples/callback"); subscribeParameters.setPhone(phone); SubscribeParam subscribeParam = new SubscribeParam(); subscribeParam.setParameters(subscribeParameters); subscribeParam.setCompany(CompanyConstant.YD); subscribeParam.setNumber(courierNumber); subscribeParam.setKey("BPEQUJxB9244"); SubscribeReq subscribeReq = new SubscribeReq(); subscribeReq.setSchema(ApiInfoConstant.SUBSCRIBE_SCHEMA); subscribeReq.setParam(new Gson().toJson(subscribeParam)); IBaseClient subscribe = new Subscribe(); JSONObject jsonObject = JSONObject.parseObject(subscribe.execute(subscribeReq).getBody()); System.err.println(jsonObject); System.out.println(subscribe.execute(subscribeReq)); returnJson.put("code", 0); returnJson.put("message", "调用成功"); } catch (Exception e) { e.printStackTrace(); returnJson.put("code", -1); returnJson.put("message", e.getMessage()); } return returnJson; } @PostMapping("/callback") public SubscribeResp callback(HttpServletRequest request) { SubscribeResp subscribeResp = new SubscribeResp(); try { String param = request.getParameter("param"); log.info("快递回调信息:{}", param); JSONObject paramJson = JSONObject.parseObject(param); if (Check.isNull(paramJson)) { throw new Exception("回调信息为空"); } JSONObject lastResult = paramJson.getJSONObject("lastResult"); if (!Check.isNull(lastResult)) { String state = lastResult.getString("state"); String nu = lastResult.getString("nu"); String com = lastResult.getString("com"); if ("3".equals(state)) { KuaishouItemCollectSamples updateSample = new KuaishouItemCollectSamples(); updateSample.setCourierNumber(nu); updateSample.setCollectSampleStatus(5); updateSample.setCollectSampleDesc("快递已签收,待上传作业"); // kuaishouItemCollectSamplesService.updateByNum(updateSample); } JSONArray data = lastResult.getJSONArray("data"); KuaishouItemCollectSampleExpress express = new KuaishouItemCollectSampleExpress(); express.setCourierNumber(nu); express.setCom(com); express.setState(state); if (!Check.isNull(data)) { express.setExpressData(data.toJSONString()); } kuaishouItemCollectSamplesService.replaceExpress(express); } subscribeResp.setResult(Boolean.TRUE); subscribeResp.setReturnCode("200"); subscribeResp.setMessage("回调成功"); } catch (Exception e) { e.printStackTrace(); subscribeResp.setResult(Boolean.FALSE); subscribeResp.setReturnCode("-1"); subscribeResp.setMessage(e.getMessage()); } return subscribeResp; } /** * 删除【请填写功能名称】 */ @PreAuthorize("@ss.hasPermi('system:samples:remove')") @Log(title = "【请填写功能名称】", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(kuaishouItemCollectSamplesService.deleteKuaishouItemCollectSamplesByIds(ids)); } }