ShopServiceImpl.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. package com.caimei.service.impl;
  2. import com.caimei.mapper.ShopMapper;
  3. import com.caimei.mapper.UserMapper;
  4. import com.caimei.model.ResponseJson;
  5. import com.caimei.model.dto.ShopSaveDto;
  6. import com.caimei.model.po.CmBrandAuthFilePo;
  7. import com.caimei.model.po.ShopInfoPo;
  8. import com.caimei.model.po.UserPo;
  9. import com.caimei.model.vo.BrandVo;
  10. import com.caimei.model.vo.CountryVo;
  11. import com.caimei.model.vo.ShopFormVo;
  12. import com.caimei.model.vo.ShopListVo;
  13. import com.caimei.service.ShopService;
  14. import com.caimei.utils.AliyunSmsUtil;
  15. import com.caimei.utils.CodeUtil;
  16. import com.caimei.utils.Md5Util;
  17. import com.caimei.utils.OSSUtils;
  18. import com.github.pagehelper.PageHelper;
  19. import com.github.pagehelper.PageInfo;
  20. import lombok.extern.slf4j.Slf4j;
  21. import org.apache.commons.codec.digest.DigestUtils;
  22. import org.springframework.stereotype.Service;
  23. import org.springframework.web.multipart.MultipartFile;
  24. import javax.annotation.Resource;
  25. import java.io.File;
  26. import java.io.FileInputStream;
  27. import java.util.Date;
  28. import java.util.List;
  29. import java.util.UUID;
  30. /**
  31. * Description
  32. *
  33. * @author : Aslee
  34. * @date : 2021/5/11
  35. */
  36. @Slf4j
  37. @Service
  38. public class ShopServiceImpl implements ShopService {
  39. @Resource
  40. private ShopMapper shopMapper;
  41. @Resource
  42. private UserMapper userMapper;
  43. @Override
  44. public ResponseJson<PageInfo<ShopListVo>> getShopList(String shopName, Integer shopType, Integer brandId, String mobile, String linkMan, Integer pageNum, Integer pageSize) {
  45. PageHelper.startPage(pageNum, pageSize);
  46. List<ShopListVo> shopList = shopMapper.getShopList(shopName, shopType, brandId, mobile, linkMan);
  47. PageInfo<ShopListVo> pageData = new PageInfo<>(shopList);
  48. return ResponseJson.success(pageData);
  49. }
  50. @Override
  51. public ResponseJson updateShopStatus(Integer authUserId, Integer status) {
  52. if (authUserId == null) {
  53. return ResponseJson.error("请输入用户id");
  54. }
  55. if (status == null) {
  56. return ResponseJson.error("请输入要更新的状态值");
  57. } else if (status != 0 && status != 1) {
  58. return ResponseJson.error("状态值只能为0或1");
  59. }
  60. shopMapper.updateShopStatusByUserId(authUserId, status);
  61. if (status == 0) {
  62. return ResponseJson.success("停用供应商成功");
  63. } else {
  64. return ResponseJson.success("启用供应商成功");
  65. }
  66. }
  67. @Override
  68. public ResponseJson resetShopPassword(Integer authUserId) {
  69. if (authUserId == null) {
  70. return ResponseJson.error("请输入用户id");
  71. }
  72. String newPassword = CodeUtil.generateCode(8);
  73. String md5Password = Md5Util.md5(newPassword);
  74. userMapper.updatePasswordByUserId(authUserId, md5Password);
  75. String mobile = shopMapper.getShopMobileByUserId(authUserId);
  76. boolean smsFlag = AliyunSmsUtil.sendSms(mobile, 7, "{code:" + newPassword + "}");
  77. if (!smsFlag) {
  78. // 短信发送失败重试一次
  79. AliyunSmsUtil.sendSms(mobile, 7, "{code:" + newPassword + "}");
  80. }
  81. log.info("正品联盟后台供应商重置密码,用户id:" + authUserId + ",新密码:" + newPassword);
  82. return ResponseJson.success("密码重置成功");
  83. }
  84. @Override
  85. public ResponseJson<Integer> uploadFile(Integer authUserId, MultipartFile file) {
  86. String fileAllName = file.getOriginalFilename();
  87. String fileType = fileAllName.substring(fileAllName.lastIndexOf(".") + 1);
  88. String fileName = file.getResource().getFilename();
  89. String uuid = UUID.randomUUID().toString().replaceAll("-", "");
  90. String filePath = uuid + "." + fileType;
  91. String contentType = OSSUtils.getContentType(fileAllName);
  92. try {
  93. //保存本地
  94. File uploadFile = OSSUtils.ossUpload(file);
  95. //判断文件的唯一性,转换成16进制md5值
  96. String md5Hex = DigestUtils.md5Hex(new FileInputStream(uploadFile));
  97. CmBrandAuthFilePo searchFile = new CmBrandAuthFilePo();
  98. searchFile.setAuthUserId(authUserId);
  99. searchFile.setMd5Hex(md5Hex);
  100. // 查找该供应商下是否已存在相同文件
  101. CmBrandAuthFilePo cmBrandAuthFile = shopMapper.getStatementFile(searchFile);
  102. if (cmBrandAuthFile == null) {
  103. log.info("默认路径>>>" + uploadFile.getAbsolutePath());
  104. // 修改情况下,如果原来已经选择了文件代理声明,并且旧文件与新文件不同,需要将旧文件删除
  105. deleteFileByUserId(authUserId);
  106. //将新文件上传oss
  107. OSSUtils.ossUpload(filePath, uploadFile, contentType);
  108. //删除本地文件
  109. OSSUtils.deleteFile(uploadFile);
  110. //保存关联关系
  111. cmBrandAuthFile = new CmBrandAuthFilePo();
  112. cmBrandAuthFile.setAuthUserId(authUserId);
  113. cmBrandAuthFile.setName(fileName);
  114. cmBrandAuthFile.setOssName(filePath);
  115. cmBrandAuthFile.setMd5Hex(md5Hex);
  116. cmBrandAuthFile.setUploadTime(new Date());
  117. shopMapper.insertStatementFile(cmBrandAuthFile);
  118. } else {
  119. //删除本地文件
  120. OSSUtils.deleteFile(uploadFile);
  121. }
  122. return ResponseJson.success("文件上传成功", cmBrandAuthFile.getId());
  123. } catch (Exception e) {
  124. log.error("<<<<< 文件上传异常 >>>>>");
  125. return ResponseJson.error("文件上传失败", null);
  126. }
  127. }
  128. @Override
  129. public void deleteFileByUserId(Integer authUserId) {
  130. CmBrandAuthFilePo searchFile = new CmBrandAuthFilePo();
  131. searchFile.setAuthUserId(authUserId);
  132. CmBrandAuthFilePo oldFile = shopMapper.getStatementFile(searchFile);
  133. if (oldFile != null) {
  134. Integer num = shopMapper.getFileNumByMd5Hex(oldFile.getMd5Hex());
  135. if (num == 1) {
  136. // 如果这个文件只有这个供应商在使用,删除oss服务器上的文件
  137. OSSUtils.deleteSingleFile(oldFile.getOssName());
  138. }
  139. shopMapper.deleteStatementFile(oldFile.getId());
  140. }
  141. }
  142. @Override
  143. public ResponseJson saveShop(ShopSaveDto shopSaveDto) {
  144. Integer shopType = shopSaveDto.getShopType();
  145. if (shopType == null) {
  146. return ResponseJson.error("请选择供应商类型", null);
  147. }
  148. // 是否为添加操作
  149. Boolean insertFlag = null == shopSaveDto.getAuthUserId();
  150. // 更新品牌授权logo
  151. shopMapper.updateBrandAuthLogo(shopSaveDto.getBrandId(),shopSaveDto.getBrandAuthLogo());
  152. /*
  153. 组装供应商用户数据
  154. */
  155. UserPo shop = new UserPo();
  156. // 供应商名称
  157. shop.setName(shopSaveDto.getShopName());
  158. // 手机号
  159. shop.setMobile(shopSaveDto.getMobile());
  160. // 联系人
  161. shop.setLinkMan(shopSaveDto.getLinkMan());
  162. // 供应商状态
  163. shop.setStatus(shopSaveDto.getShopStatus());
  164. if (insertFlag) {
  165. // 用户身份:1管理员,2供应商
  166. shop.setUserIdentity(2);
  167. // 创建管理员id
  168. shop.setCreateBy(shopSaveDto.getCreateBy());
  169. // 创建时间
  170. shop.setCreateTime(new Date());
  171. // 设置随机8位密码
  172. shop.setPassword(Md5Util.md5(CodeUtil.generateCode(8)));
  173. // 插入供应商用户
  174. shopMapper.insertShop(shop);
  175. } else {
  176. shop.setAuthUserId(shopSaveDto.getAuthUserId());
  177. // 更新供应商用户
  178. shopMapper.updateShopByUserId(shop);
  179. }
  180. /*
  181. 组装供应商信息数据
  182. */
  183. ShopInfoPo shopInfo = new ShopInfoPo();
  184. // 供应商用户id
  185. shopInfo.setAuthUserId(shop.getAuthUserId());
  186. // 供应商类型:1品牌方,2代理商
  187. shopInfo.setType(shopSaveDto.getShopType());
  188. // 品牌id
  189. shopInfo.setBrandId(shopSaveDto.getBrandId());
  190. // 国家id
  191. shopInfo.setCountryId(shopSaveDto.getCountryId());
  192. if (null != shopSaveDto.getStatementType()) {
  193. shopInfo.setStatementType(shopSaveDto.getStatementType());
  194. if (1 == shopSaveDto.getStatementType()) {
  195. // 声明弹窗
  196. shopInfo.setStatementContent(shopSaveDto.getStatementContent());
  197. } else if (2 == shopSaveDto.getStatementType()) {
  198. // 声明链接
  199. shopInfo.setStatementLink(shopSaveDto.getStatementLink());
  200. } else if (3 == shopSaveDto.getStatementType()) {
  201. // 声明图片
  202. shopInfo.setStatementImage(shopSaveDto.getStatementImage());
  203. }
  204. if (4 == shopSaveDto.getStatementType()) {
  205. if (insertFlag){
  206. // 更新代理声明文件
  207. Integer statementFileId = shopSaveDto.getStatementFileId();
  208. shopMapper.updateFileUserId(statementFileId, shop.getAuthUserId());
  209. }
  210. } else if (!insertFlag){
  211. // 没有选择文件代理声明的情况下,若存在原来的文件,删除代理声明文件
  212. deleteFileByUserId(shop.getAuthUserId());
  213. }
  214. }
  215. // 保存供应商信息
  216. if (insertFlag) {
  217. shopMapper.insertShopInfo(shopInfo);
  218. } else {
  219. shopMapper.updateShopInfoByUserId(shopInfo);
  220. }
  221. return ResponseJson.success("保存供应商成功", null);
  222. }
  223. @Override
  224. public ResponseJson<ShopFormVo> getShopFormData(Integer authUserId) {
  225. if (null == authUserId) {
  226. return ResponseJson.error("参数异常,请输入供应商用户id", null);
  227. }
  228. ShopFormVo shopForm = shopMapper.getShopByAuthUserId(authUserId);
  229. return ResponseJson.success(shopForm);
  230. }
  231. @Override
  232. public ResponseJson<List<BrandVo>> getBrandList(Integer type) {
  233. List<BrandVo> brandList = shopMapper.getBrandList(type);
  234. return ResponseJson.success(brandList);
  235. }
  236. @Override
  237. public ResponseJson<List<CountryVo>> getCountryList() {
  238. List<CountryVo> countryList = shopMapper.getCountryList();
  239. return ResponseJson.success(countryList);
  240. }
  241. }