ClubServiceImpl.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321
  1. package com.caimei365.user.service.impl;
  2. import com.caimei365.user.mapper.BaseMapper;
  3. import com.caimei365.user.mapper.ClubMapper;
  4. import com.caimei365.user.mapper.RegisterMapper;
  5. import com.caimei365.user.model.ResponseJson;
  6. import com.caimei365.user.model.dto.ClubUpdateDto;
  7. import com.caimei365.user.model.po.UserBeansHistoryPo;
  8. import com.caimei365.user.model.po.UserPo;
  9. import com.caimei365.user.model.vo.*;
  10. import com.caimei365.user.service.ClubService;
  11. import com.github.pagehelper.PageHelper;
  12. import com.github.pagehelper.PageInfo;
  13. import lombok.extern.slf4j.Slf4j;
  14. import org.apache.commons.lang.StringUtils;
  15. import org.springframework.stereotype.Service;
  16. import javax.annotation.Resource;
  17. import java.text.SimpleDateFormat;
  18. import java.util.*;
  19. /**
  20. * Description
  21. *
  22. * @author : Charles
  23. * @date : 2021/3/15
  24. */
  25. @Slf4j
  26. @Service
  27. public class ClubServiceImpl implements ClubService {
  28. @Resource
  29. private ClubMapper clubMapper;
  30. @Resource
  31. private BaseMapper baseMapper;
  32. @Resource
  33. private RegisterMapper registerMapper;
  34. /**
  35. * 根据用户Id查询机构资料
  36. *
  37. * @param userId 用户Id
  38. * @return Map(userPo, clubPo)
  39. */
  40. @Override
  41. public ResponseJson<Map<String, Object>> getClubUserInfo(Integer userId) {
  42. if (null == userId) {
  43. return ResponseJson.error("参数异常:用户Id不能为空!", null);
  44. }
  45. // 用户信息
  46. UserVo user = baseMapper.getUserByUserId(userId);
  47. if (user == null) {
  48. return ResponseJson.error("用户信息不存在", null);
  49. }
  50. if (!StringUtils.isBlank(user.getAuditNote()) && 2 == user.getAuditStatus()) {
  51. if (user.getAuditNote().contains(",")) {
  52. List<String> list = Arrays.asList(user.getAuditNote().split(","));
  53. user.setAuditNoteList(list);
  54. } else {
  55. user.setAuditNoteList(Collections.singletonList(user.getAuditStatus().toString()));
  56. }
  57. }
  58. // 机构信息
  59. ClubVo club = clubMapper.getClubById(user.getClubId());
  60. if (club == null) {
  61. return ResponseJson.error("机构信息不存在", null);
  62. }
  63. if (null != club.getTownId()) {
  64. TownVo town = baseMapper.getTown(club.getTownId());
  65. CityVo city = baseMapper.getCity(town.getCityId());
  66. ProvinceVo province = baseMapper.getProvince(city.getProvinceId());
  67. club.setCityId(city.getCityId());
  68. club.setProvinceId(province.getProvinceId());
  69. club.setProvincialAddress(province.getName() + "" + city.getName() + "" + town.getName());
  70. }
  71. Map<String, Object> map = new HashMap(2);
  72. map.put("user", user);
  73. map.put("club", club);
  74. return ResponseJson.success(map);
  75. }
  76. /**
  77. * 修改机构资料
  78. *
  79. * @param club ClubUpgradeDto:{
  80. * clubId 机构ID
  81. * userId 用户ID
  82. * name 机构名称
  83. * shortName 机构简称(shortName)
  84. * contractEmail 邮箱(contractEmail1)
  85. * contractPhone 固定电话
  86. * linkMan 联系人(linkMan1)
  87. * provinceId 省Id
  88. * cityId 市Id
  89. * townId 县区Id
  90. * address 地址
  91. * shopPhoto 门头照(headpic)
  92. * businessLicense 营业执照(businessLicenseImage)
  93. * socialCreditCode 统一社会信用代码(socialCreditCode)
  94. * firstClubType 一级分类:医美=1和生美=2
  95. * secondClubType 医美的二级分类:诊所=1、门诊=2、医院=3。 生美没有二级分类
  96. * department 医美分类下的门诊和医院则需要填写科室
  97. * medicalPracticeLicense 医美分类必须上传医疗执业许可证(medicalPracticeLicenseImg)
  98. * mainProduct 主打项目(mainpro)
  99. * fax 传真
  100. * profile 公司简介
  101. * }
  102. * @return ClubUpdateDto
  103. */
  104. @Override
  105. public ResponseJson<ClubUpdateDto> updateClubUserInfo(ClubUpdateDto club) {
  106. // 参数校验
  107. if (club.getUserId() == null) {
  108. return ResponseJson.error("参数异常:用户Id不能为空!", null);
  109. }
  110. if (club.getClubId() == null) {
  111. return ResponseJson.error("参数异常:机构Id不能为空!", null);
  112. }
  113. if (club.getLinkMan() == null) {
  114. return ResponseJson.error("参数异常:联系人不能为空!", null);
  115. }
  116. if (StringUtils.isNotBlank(club.getContractEmail())) {
  117. Integer userIdByEmail = baseMapper.getUserIdByEmail(club.getContractEmail());
  118. if (null != userIdByEmail && !userIdByEmail.equals(club.getUserId())) {
  119. return ResponseJson.error("该邮箱已被使用", null);
  120. }
  121. }
  122. UserPo user = new UserPo();
  123. // 用户Id
  124. user.setUserId(club.getUserId());
  125. // 用户名
  126. user.setUserName(club.getLinkMan());
  127. // 邮箱
  128. if (StringUtils.isNotBlank(club.getContractEmail())) {
  129. user.setEmail(club.getContractEmail());
  130. }
  131. // 机构名称
  132. if (StringUtils.isNotBlank(club.getName())) {
  133. user.setName(club.getName());
  134. }
  135. // 更新机构用户信息
  136. clubMapper.updateClubUserByUpdateInfo(user);
  137. // 更新机构信息
  138. clubMapper.updateClubByUpdateInfo(club);
  139. UserVo userVo = baseMapper.getUserByUserId(club.getUserId());
  140. if (userVo != null && userVo.getUserIdentity() == 4) {
  141. Integer id = clubMapper.findBeansHistoryByType(club.getUserId(), 3);
  142. boolean b = StringUtils.isNotBlank(club.getLinkMan()) && StringUtils.isNotBlank(club.getFax())
  143. && StringUtils.isNotBlank(club.getContractPhone()) && StringUtils.isNotBlank(club.getProfile());
  144. if (b && id == null) {
  145. saveUserBeans(userVo);
  146. }
  147. } else if (userVo != null && userVo.getUserIdentity() == 2) {
  148. Integer id = clubMapper.findBeansHistoryByType(club.getUserId(), 4);
  149. boolean b = StringUtils.isNotBlank(club.getLinkMan()) && StringUtils.isNotBlank(club.getFax()) && club.getTownId() != null
  150. && StringUtils.isNotBlank(club.getContractPhone()) && StringUtils.isNotBlank(club.getProfile()) && StringUtils.isNotBlank(club.getAddress())
  151. && StringUtils.isNotBlank(club.getName()) && StringUtils.isNotBlank(club.getShortName()) && StringUtils.isNotBlank(club.getContractEmail())
  152. && StringUtils.isNotBlank(club.getSocialCreditCode()) && StringUtils.isNotBlank(club.getBusinessLicense()) && StringUtils.isNotBlank(club.getShopPhoto())
  153. && club.getFirstClubType() != null && StringUtils.isNotBlank(club.getMainProduct());
  154. if (b) {
  155. if (club.getFirstClubType() == 1) {
  156. //医美
  157. b = club.getSecondClubType() != null && StringUtils.isNotBlank(club.getMedicalPracticeLicense());
  158. if (b && ("2".equals(club.getMedicalPracticeLicense()) || "3".equals(club.getMedicalPracticeLicense()))) {
  159. b = StringUtils.isNotBlank(club.getDepartment());
  160. }
  161. }
  162. }
  163. if (b && id == null) {
  164. saveUserBeans(userVo);
  165. }
  166. }
  167. return ResponseJson.success("修改机构资料成功", club);
  168. }
  169. private void saveUserBeans(UserVo user) {
  170. //机构完善资料,送500采美豆
  171. UserBeansHistoryPo beansHistory = new UserBeansHistoryPo();
  172. beansHistory.setUserId(user.getUserId());
  173. if (user.getUserIdentity() == 4) {
  174. //普通机构完善资料
  175. beansHistory.setBeansType(3);
  176. } else {
  177. //会员机构完善资料
  178. beansHistory.setBeansType(4);
  179. }
  180. beansHistory.setType(1);
  181. beansHistory.setNum(500);
  182. beansHistory.setPushStatus(0);
  183. beansHistory.setAddTime(new Date());
  184. registerMapper.insertBeansHistory(beansHistory);
  185. Integer userBeans = user.getUserBeans();
  186. userBeans = userBeans == null ? 500 : userBeans + 500;
  187. clubMapper.updateUserBeans(user.getUserId(), userBeans);
  188. }
  189. /**
  190. * 机构个人中心
  191. *
  192. * @param userId 用户Id
  193. * @return Map(userPo, clubPo)
  194. */
  195. @Override
  196. public ResponseJson<Map<String, Object>> getClubHomeData(Integer userId) {
  197. if (null == userId) {
  198. return ResponseJson.error("参数异常:用户Id不能为空!", null);
  199. }
  200. // 用户信息
  201. UserVo user = baseMapper.getUserByUserId(userId);
  202. if (user == null) {
  203. return ResponseJson.error("用户信息不存在", null);
  204. }
  205. ClubVo club = clubMapper.getClubById(user.getClubId());
  206. if (club == null) {
  207. return ResponseJson.error("机构信息不存在", null);
  208. }
  209. Map<String, Object> map = new HashMap<>(10);
  210. map.put("user", user);
  211. map.put("club", club);
  212. OrderCountVo countVo = clubMapper.getOrderCount(userId);
  213. //待确认数量
  214. map.put("confirmedCount", countVo != null ? countVo.getConfirmedCount() : 0);
  215. //待付款数量
  216. map.put("paymentCount", countVo != null ? countVo.getPaymentCount() : 0);
  217. //待发货数量
  218. map.put("waitShipmentsCount", countVo != null ? countVo.getWaitShipmentsCount() : 0);
  219. //已发货数量
  220. map.put("shipmentsCount", countVo != null ? countVo.getShipmentsCount() : 0);
  221. //退货款数量
  222. map.put("salesReturnCount", countVo != null ? countVo.getSalesReturnCount() : 0);
  223. //联系电话
  224. String contactNumber = baseMapper.getAfterSalesPhone();
  225. map.put("contactNumber", contactNumber);
  226. //完善资料是否送豆
  227. boolean isModify = true;
  228. Integer id = null;
  229. if (user.getUserIdentity() == 4) {
  230. id = clubMapper.findBeansHistoryByType(userId, 3);
  231. } else if (user.getUserIdentity() == 2) {
  232. id = clubMapper.findBeansHistoryByType(userId, 4);
  233. }
  234. if (id != null && id > 0) {
  235. isModify = false;
  236. }
  237. map.put("isModify", isModify);
  238. //优惠券可用数量
  239. Integer couponNum = clubMapper.findCountCoupon(userId);
  240. map.put("couponNum", couponNum);
  241. return ResponseJson.success(map);
  242. }
  243. @Override
  244. public ResponseJson<BeansHistoryVo> beansPopUps(Integer userId) {
  245. BeansHistoryVo beansHistory = clubMapper.findBeansHistory(userId);
  246. if (beansHistory == null) {
  247. beansHistory = new BeansHistoryVo();
  248. //线上支付送豆
  249. Integer num = clubMapper.findByBeansType(userId, 6);
  250. beansHistory.setBeansType(6);
  251. if (num == null || num == 0) {
  252. //下单送豆
  253. num = clubMapper.findByBeansType(userId, 5);
  254. beansHistory.setBeansType(5);
  255. }
  256. beansHistory.setNum(num);
  257. }
  258. if (beansHistory.getNum() == null || beansHistory.getNum() == 0) {
  259. return ResponseJson.error("无推送", null);
  260. }
  261. clubMapper.updatePushStatus(userId);
  262. return ResponseJson.success(beansHistory);
  263. }
  264. @Override
  265. public ResponseJson<Map<String, Object>> beansHistory(Integer userId, Integer year, Integer month, Integer type, int pageNum, int pageSize) {
  266. Map<String, Object> map = new HashMap<>(2);
  267. UserVo user = baseMapper.getUserByUserId(userId);
  268. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  269. Calendar calendar = Calendar.getInstance();
  270. calendar.set(Calendar.YEAR, year);
  271. calendar.set(Calendar.MONTH, month - 1);
  272. calendar.set(Calendar.DAY_OF_MONTH, calendar.getMinimum(Calendar.DATE));
  273. String startTime = format.format(calendar.getTime()) + " 00:00:00";
  274. calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DATE));
  275. String endTime = format.format(calendar.getTime()) + " 23:59:59";
  276. PageHelper.startPage(pageNum, pageSize);
  277. List<BeansHistoryVo> historyList = clubMapper.findAllBeansHistory(userId, startTime, endTime, type);
  278. PageInfo<BeansHistoryVo> pageInfo = new PageInfo<>(historyList);
  279. map.put("pageInfo", pageInfo);
  280. map.put("userBeans", user.getUserBeans());
  281. return ResponseJson.success(map);
  282. }
  283. @Override
  284. public ResponseJson archiveDeduction(Integer userId, Integer archiveId) {
  285. // 查询是否已存在用户对该资料的抵扣记录
  286. Integer historyId = clubMapper.findBeansHistoryByArchiveId(userId, archiveId);
  287. if (null != historyId) {
  288. return ResponseJson.error(-1,"请勿重复抵扣");
  289. }
  290. // 查询用户采美豆数量
  291. Integer beansNum = clubMapper.getBeansNumByUserId(userId);
  292. if (null == beansNum || beansNum < 50) {
  293. return ResponseJson.error(-2, "抱歉,您的采美豆不足以抵扣,无法访问该商品资料");
  294. }
  295. UserBeansHistoryPo beansHistory = new UserBeansHistoryPo();
  296. beansHistory.setUserId(userId);
  297. beansHistory.setArchiveId(archiveId);
  298. beansHistory.setBeansType(13);
  299. beansHistory.setType(2);
  300. beansHistory.setNum(100);
  301. beansHistory.setPushStatus(0);
  302. beansHistory.setAddTime(new Date());
  303. registerMapper.insertBeansHistory(beansHistory);
  304. beansNum = beansNum - 100;
  305. clubMapper.updateUserBeans(userId, beansNum);
  306. return ResponseJson.success("抵扣成功");
  307. }
  308. }