CompanyServiceImpl.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356
  1. package com.dk.oauth.service.impl;
  2. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  3. import com.dk.common.exception.BaseBusinessException;
  4. import com.dk.common.infrastructure.enums.ErrorCodeEnum;
  5. import com.dk.common.model.response.mst.OrgResponse;
  6. import com.dk.common.model.response.mst.StaffResponse;
  7. import com.dk.common.model.vo.mst.OrgVO;
  8. import com.dk.common.model.vo.mst.StaffVO;
  9. import com.dk.common.response.ResponseCodeEnum;
  10. import com.dk.common.response.ResponseResultUtil;
  11. import com.dk.common.response.ResponseResultVO;
  12. import com.dk.oauth.entity.Company;
  13. import com.dk.oauth.entity.MenuFrequency;
  14. import com.dk.oauth.entity.UserLogin;
  15. import com.dk.oauth.feign.service.OrgFeign;
  16. import com.dk.oauth.feign.service.StaffFeign;
  17. import com.dk.oauth.mapper.*;
  18. import com.dk.oauth.query.*;
  19. import com.dk.oauth.response.*;
  20. import com.dk.oauth.service.ICompanyService;
  21. import org.springframework.stereotype.Service;
  22. import org.springframework.transaction.annotation.Transactional;
  23. import org.springframework.web.context.request.RequestContextHolder;
  24. import org.springframework.web.context.request.ServletRequestAttributes;
  25. import javax.annotation.Resource;
  26. import javax.servlet.http.HttpServletRequest;
  27. import java.util.ArrayList;
  28. import java.util.HashMap;
  29. import java.util.List;
  30. import java.util.Map;
  31. /**
  32. * 公司实现类
  33. *
  34. * @author admin
  35. * @since 2023-07-01 09:41:05
  36. */
  37. @Service("companyService")
  38. public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> implements ICompanyService {
  39. @Resource
  40. CompanyMapper companyMapper;
  41. @Resource
  42. UserMapper userMapper;
  43. @Resource
  44. StaffFeign staffFeign;
  45. @Resource
  46. OrgFeign orgFeign;
  47. @Resource
  48. DictionaryDataMapper dictionaryDataMapper;
  49. @Resource
  50. GoodsCategoryMapper goodsCategoryMapper;
  51. @Resource
  52. RoleMapper roleMapper;
  53. @Resource
  54. UnitMapper unitMapper;
  55. @Resource
  56. SaleChannelMapper saleChannelMapper;
  57. @Resource
  58. WarehouseMapper warehouseMapper;
  59. /**
  60. * @desc : 通过ID查询
  61. * @author : admin
  62. * @date : 2023/2/3 13:32
  63. */
  64. @Override
  65. public ResponseResultVO selectById(Integer id) {
  66. return ResponseResultUtil.success(companyMapper.selectById(id));
  67. }
  68. /**
  69. * @desc : 通过ID查询
  70. * @author : admin
  71. * @date : 2023/2/3 13:32
  72. */
  73. @Override
  74. public ResponseResultVO selectByOpenId(String openid) {
  75. return ResponseResultUtil.success(companyMapper.selectByOpenId(openid));
  76. }
  77. /**
  78. * @desc : 更新微信用的公司
  79. * @author : admin
  80. * @date : 2023/2/3 13:32
  81. */
  82. @Override
  83. @Transactional(rollbackFor = Exception.class)
  84. public ResponseResultVO updateWxUserCompany(Map<String, Object> map) {
  85. String userId = map.get("userId") + "";
  86. Integer cpId = Integer.valueOf(map.get("cpId") + "");
  87. List<Integer> cpIds = new ArrayList<>();
  88. cpIds.add(cpId);
  89. int i = userMapper.updateCpid(userId, cpId, cpIds);
  90. return ResponseResultUtil.success(true);
  91. }
  92. /**
  93. * @desc : 选择公司更新微信用户的所在当前的公司
  94. * @author : admin
  95. * @date : 2023/2/3 13:32
  96. */
  97. @Override
  98. @Transactional(rollbackFor = Exception.class)
  99. public ResponseResultVO updateCurrentCpByWxid(Map<String, Object> map) {
  100. String userWxid = map.get("openid") + "";
  101. Integer cpId = null;
  102. if (map.get("cpId") != null) {
  103. cpId = Integer.valueOf(map.get("cpId") + "");
  104. }
  105. int i = userMapper.updateCurrentCpByWxid(userWxid, cpId);
  106. return ResponseResultUtil.success(true);
  107. }
  108. /**
  109. * @desc : 注册-商户
  110. * @author : 姜永辉
  111. * @date : 2024-02-20 13:55
  112. */
  113. @Override
  114. @Transactional(rollbackFor = Exception.class)
  115. public ResponseResultVO registerCompany(Company company) {
  116. Company c = new Company();
  117. c.setFlgValid(true);
  118. c.setCpName(company.getCpName());
  119. Long aLong = companyMapper.countByCond(c);
  120. if (aLong > 0) {
  121. return ResponseResultUtil.error(ErrorCodeEnum.COMPANY_CODE_EXISTS.getCode(),
  122. ErrorCodeEnum.COMPANY_CODE_EXISTS.getMessage());
  123. }
  124. if ("PRO".equals(company.getGradeCode())){
  125. company.setCurStaffNum(100);
  126. company.setMaxStaffNum(100);
  127. company.setCpStatus("公司状态-待审");
  128. }else {
  129. company.setCurStaffNum(10);
  130. company.setMaxStaffNum(10);
  131. company.setCpStatus("公司状态-通过");
  132. }
  133. //获取具体服务的地址
  134. company.setSvcCode(companyMapper.selectServiceAllot(company.getGradeCode()));
  135. companyMapper.insert(company);
  136. // 动态设置服务的地址
  137. ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder
  138. .getRequestAttributes();
  139. HttpServletRequest request;
  140. if (attributes != null) {
  141. request = attributes.getRequest();
  142. request.setAttribute("svcCode", company.getSvcCode().replace("_", "-"));
  143. }
  144. // 组织机构 -顶级 和公司的名称一样
  145. // 二级 名称叫做 运营中心 返回的业务部门的id是运营中新的id
  146. OrgVO orgVO = new OrgVO();
  147. orgVO.setCpId(company.getCpId());
  148. orgVO.setOrgName(company.getCpName());
  149. // 二级 名称叫做 运营中心 返回的业务部门的id是运营中新的id
  150. ResponseResultVO<OrgResponse> orgResponseResponseResultVO = orgFeign.insertFeignOrg(orgVO);
  151. OrgResponse orgResponse = new OrgResponse();
  152. // 如果没有成功返回,状态设置为待审
  153. if (orgResponseResponseResultVO.getCode() != ResponseCodeEnum.SUCCESS.getCode()) {
  154. // 无用户
  155. throw new BaseBusinessException(ErrorCodeEnum.COMPANY_REGISTER_ERROR.getCode(),
  156. ErrorCodeEnum.COMPANY_REGISTER_ERROR.getMessage());
  157. } else {
  158. orgResponse = orgResponseResponseResultVO.getData();
  159. }
  160. // 生成员工
  161. UserLogin userLogin = userMapper.selectById(company.getOwner());
  162. StaffVO staffVO = new StaffVO();
  163. staffVO.setWxUserId(userLogin.getUserId());
  164. staffVO.setCpId(company.getCpId());
  165. staffVO.setStaffName(userLogin.getUserPhone());
  166. staffVO.setStaffPhone(userLogin.getUserPhone());
  167. staffVO.setOrgId(orgResponse.getOrgId());
  168. // 生成默认的角色数组--// 更新用户的角色ids--在插入基础数据的时候更新了。
  169. // staffVO.setRoleIds();
  170. // 注册商户时候插入员工
  171. ResponseResultVO<StaffResponse> staffResponseResponseResultVO = staffFeign.insertFeignStaff(staffVO);
  172. StaffResponse staffResponse = new StaffResponse();
  173. // 如果没有成功返回,状态设置为待审
  174. if (staffResponseResponseResultVO.getCode() != ResponseCodeEnum.SUCCESS.getCode()) {
  175. // 无用户
  176. throw new BaseBusinessException(staffResponseResponseResultVO.getCode(), staffResponseResponseResultVO.getMessage());
  177. } else {
  178. staffResponse = staffResponseResponseResultVO.getData();
  179. }
  180. // 更新 创建商户用户的公司id
  181. Integer cpId = company.getCpId();
  182. List<Integer> cpIds = new ArrayList<>();
  183. cpIds.add(cpId);
  184. // 当天的userid可能 存在加入公司
  185. if (userLogin.getJoinedCps()!=null && userLogin.getJoinedCps().size() > 0){
  186. cpIds.addAll(userLogin.getJoinedCps()) ;
  187. }
  188. userMapper.updateCpid(userLogin.getUserId(), cpId, cpIds);
  189. // 生成员工 角色 基础资料(仓库 渠道 收入 支出 入库 出库 账户 来源 盈亏原因) 计量单位 种类 打印票据 等等。
  190. String staffId = staffResponse.getStaffId();
  191. Map<String, List<Map<String, Object>>> map = new HashMap<>();
  192. List<Map<String, Object>> listCom = new ArrayList<>();
  193. Map<String, Object> m = new HashMap<>();
  194. m.put("gradeCode",company.getGradeCode());
  195. m.put("cpId",cpId);
  196. m.put("staffId",staffId);
  197. listCom.add(m);
  198. map.put("company",listCom);
  199. // 角色及权限
  200. List<RoleResponse> roleResponses = roleMapper.selectByCond(new RoleQuery());
  201. List<Map<String, Object>> listRoles = new ArrayList<>();
  202. for (int i = 0; i < roleResponses.size(); i++) {
  203. m = new HashMap<>();
  204. m.put("roleCode",roleResponses.get(i).getRoleCode());
  205. m.put("roleName",roleResponses.get(i).getRoleName());
  206. m.put("displayNo",roleResponses.get(i).getDisplayNo());
  207. m.put("cpId",cpId);
  208. m.put("opCreateUserId",staffId);
  209. listRoles.add(m);
  210. }
  211. map.put("roles",listRoles);
  212. // 基础资料(仓库 渠道 )
  213. List<WarehouseResponse> warehouseResponses = warehouseMapper.selectByCond(new WarehouseQuery());
  214. List<Map<String, Object>> listWarehouses = new ArrayList<>();
  215. for (int i = 0; i < warehouseResponses.size(); i++) {
  216. m = new HashMap<>();
  217. m.put("whCode",warehouseResponses.get(i).getWhCode());
  218. m.put("whName",warehouseResponses.get(i).getWhName());
  219. m.put("displayNo",warehouseResponses.get(i).getDisplayNo());
  220. m.put("flgDefault",warehouseResponses.get(i).getFlgDefault());
  221. m.put("cpId",cpId);
  222. m.put("opCreateUserId",staffId);
  223. listWarehouses.add(m);
  224. }
  225. map.put("warehouses",listWarehouses);
  226. // 基础资料(仓库 渠道 )
  227. List<SaleChannelResponse> saleChannelResponses = saleChannelMapper.selectByCond(new SaleChannelQuery());
  228. List<Map<String, Object>> listSaleChannels = new ArrayList<>();
  229. for (int i = 0; i < saleChannelResponses.size(); i++) {
  230. m = new HashMap<>();
  231. m.put("channelCode",saleChannelResponses.get(i).getChannelCode());
  232. m.put("channelName",saleChannelResponses.get(i).getChannelName());
  233. m.put("displayNo",saleChannelResponses.get(i).getDisplayNo());
  234. m.put("flgDefault",saleChannelResponses.get(i).getFlgDefault());
  235. m.put("cpId",cpId);
  236. m.put("opCreateUserId",staffId);
  237. listSaleChannels.add(m);
  238. }
  239. map.put("saleChannels",listSaleChannels);
  240. // 基础资料(仓库 渠道 收入 支出 入库 出库 账户 来源 盈亏原因)
  241. List<DictionaryDataResponse> dictionaryDataResponses = dictionaryDataMapper.selectByCond(new DictionaryDataQuery());
  242. List<Map<String, Object>> listDictionaryDatas = new ArrayList<>();
  243. for (int i = 0; i < dictionaryDataResponses.size(); i++) {
  244. m = new HashMap<>();
  245. m.put("dictCode",dictionaryDataResponses.get(i).getDictCode());
  246. m.put("dataCode",dictionaryDataResponses.get(i).getDataCode());
  247. m.put("dataValue",dictionaryDataResponses.get(i).getDataValue());
  248. m.put("displayNo",dictionaryDataResponses.get(i).getDisplayNo());
  249. m.put("flgDefault",dictionaryDataResponses.get(i).getFlgDefault());
  250. m.put("cpId",cpId);
  251. m.put("opCreateUserId",staffId);
  252. listDictionaryDatas.add(m);
  253. }
  254. map.put("dictionaryDatas",listDictionaryDatas);
  255. // 计量单位
  256. List<UnitResponse> unitResponses = unitMapper.selectByCond(new UnitQuery());
  257. List<Map<String, Object>> listUnits = new ArrayList<>();
  258. for (int i = 0; i < unitResponses.size(); i++) {
  259. m = new HashMap<>();
  260. m.put("unitCode",unitResponses.get(i).getUnitCode());
  261. m.put("unitName",unitResponses.get(i).getUnitName());
  262. m.put("decimalPlaces",unitResponses.get(i).getDecimalPlaces());
  263. m.put("displayNo",unitResponses.get(i).getDisplayNo());
  264. m.put("cpId",cpId);
  265. m.put("opCreateUserId",staffId);
  266. listUnits.add(m);
  267. }
  268. map.put("units",listUnits);
  269. // 种类
  270. List<GoodsCategoryResponse> goodsCategoryResponses = goodsCategoryMapper.selectByCond(new GoodsCategoryQuery());
  271. List<Map<String, Object>> listGoodsCategorys = new ArrayList<>();
  272. for (int i = 0; i < goodsCategoryResponses.size(); i++) {
  273. m = new HashMap<>();
  274. m.put("catCode",goodsCategoryResponses.get(i).getCatCode());
  275. m.put("catName",goodsCategoryResponses.get(i).getCatName());
  276. m.put("parentId",goodsCategoryResponses.get(i).getParentId());
  277. m.put("topId",goodsCategoryResponses.get(i).getTopId());
  278. m.put("levelUpper",goodsCategoryResponses.get(i).getLevelUpper());
  279. m.put("levelLower",goodsCategoryResponses.get(i).getLevelLower());
  280. m.put("levelLeaf",goodsCategoryResponses.get(i).getLevelLeaf());
  281. m.put("levelNo",goodsCategoryResponses.get(i).getLevelNo());
  282. m.put("levelCode",goodsCategoryResponses.get(i).getLevelCode());
  283. m.put("levelName",goodsCategoryResponses.get(i).getLevelName());
  284. m.put("displayNo",goodsCategoryResponses.get(i).getDisplayNo());
  285. m.put("cpId",cpId);
  286. m.put("opCreateUserId",staffId);
  287. listGoodsCategorys.add(m);
  288. }
  289. map.put("goodsCategorys",listGoodsCategorys);
  290. // 打印票据
  291. //List<PrintLayout> printLayoutResponses = printLayoutMapper.selectByCond(new PrintLayout());
  292. //List<Map<String, Object>> listPrintLayout = new ArrayList<>();
  293. //for (int i = 0; i < printLayoutResponses.size(); i++) {
  294. // m = new HashMap<>();
  295. // m.put("layoutName",printLayoutResponses.get(i).getLayoutName());
  296. // m.put("layoutData",printLayoutResponses.get(i).getLayoutData());
  297. // m.put("displayNo",printLayoutResponses.get(i).getDisplayNo());
  298. // m.put("docName",printLayoutResponses.get(i).getDocName());
  299. // m.put("cpId",cpId);
  300. // m.put("opCreateUserId",staffId);
  301. // listPrintLayout.add(m);
  302. //}
  303. //map.put("printLayout",listPrintLayout);
  304. ResponseResultVO listResponseResultVO = staffFeign.insertFeignCompanyData(map);
  305. // 如果没有成功返回
  306. if (listResponseResultVO.getCode() != ResponseCodeEnum.SUCCESS.getCode()) {
  307. // 无用户
  308. throw new BaseBusinessException(listResponseResultVO.getCode(), listResponseResultVO.getMessage());
  309. } else {
  310. // 更新用户的角色ids--在插入基础数据的时候更新了。
  311. // String rid = listResponseResultVO.getData();
  312. // roleids.add(rid);
  313. }
  314. return ResponseResultUtil.success(company);
  315. }
  316. /**
  317. * @desc : 保存用户功能频率表
  318. * @author : 周兴
  319. * @date : 2024/3/28 9:39
  320. */
  321. @Transactional(
  322. rollbackFor = {Exception.class}
  323. )
  324. public ResponseResultVO<?> saveMenuFrequency(MenuFrequency menuFrequency) {
  325. MenuFrequency mf = companyMapper.selectMenuByUuid(menuFrequency);
  326. if(mf == null ){
  327. menuFrequency.setQty(1);
  328. }else{
  329. menuFrequency.setQty(mf.getQty() + 1);
  330. }
  331. // 保存用户功能频率表
  332. companyMapper.saveMenuFrequency(menuFrequency);
  333. return ResponseResultUtil.success();
  334. }
  335. }