CmVipCouponService.java 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390
  1. package com.caimei.modules.coupon.service;
  2. import com.caimei.modules.coupon.dao.CmCouponDao;
  3. import com.caimei.modules.coupon.dao.CmCouponVipDao;
  4. import com.caimei.modules.coupon.entity.*;
  5. import com.caimei.modules.user.entity.NewCmShop;
  6. import com.caimei.modules.utils.DateUtil;
  7. import com.thinkgem.jeesite.common.persistence.Page;
  8. import com.thinkgem.jeesite.common.service.CrudService;
  9. import org.apache.commons.lang3.StringUtils;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.stereotype.Service;
  12. import org.springframework.transaction.annotation.Transactional;
  13. import java.util.ArrayList;
  14. import java.util.Date;
  15. import java.util.List;
  16. /**
  17. * @author zzj
  18. */
  19. @Service
  20. @Transactional(readOnly = true)
  21. public class CmVipCouponService extends CrudService<CmCouponVipDao, CmVipCoupon> {
  22. @Autowired
  23. private CmCouponService cmCouponService;
  24. @Autowired
  25. private CmCouponVipDao cmCouponVipDao;
  26. @Autowired
  27. private CmCouponDao cmCouponDao;
  28. @Override
  29. public CmVipCoupon get(String id) {
  30. CmVipCoupon vipCoupon = super.get(id);
  31. if (null != vipCoupon) {
  32. List<CmCoupon> couponList = new ArrayList<>();
  33. List<String> bindCoupons = cmCouponVipDao.getBindCoupons(id);
  34. for (String s : bindCoupons) {
  35. CmCoupon cmCoupon = cmCouponService.get(s);
  36. couponList.add(cmCoupon);
  37. }
  38. vipCoupon.setCouponList(couponList);
  39. }
  40. return vipCoupon;
  41. }
  42. @Override
  43. public Page<CmVipCoupon> findPage(Page<CmVipCoupon> page, CmVipCoupon cmVipCoupon) {
  44. Page<CmVipCoupon> vipPage = super.findPage(page, cmVipCoupon);
  45. List<CmVipCoupon> cmVipCouponList = vipPage.getList();
  46. cmVipCouponList.forEach(vipCoupon -> {
  47. List<String> bindCoupons = cmCouponVipDao.getBindCoupons(vipCoupon.getId());
  48. List<CmCoupon> couponList = cmCouponVipDao.getCouponListByIds(bindCoupons, cmVipCoupon.getCouponType(), cmVipCoupon.getStatus());
  49. Date date = new Date();
  50. couponList.forEach(coupon -> {
  51. cmCouponService.setCouponStatus(coupon, date);
  52. if ("1".equals(coupon.getCouponsMode())) {
  53. //兑换码券
  54. Integer num = cmCouponDao.findQuantityRedeemed(coupon.getId());
  55. coupon.setCodeNum(num);
  56. } else {
  57. if (2 == coupon.getCouponType()) {
  58. //用户专享劵
  59. CmCouponClub couponClub = cmCouponDao.findCouponClub(coupon.getId());
  60. if (couponClub == null) {
  61. coupon.setClaimStatus("1");
  62. } else {
  63. coupon.setClaimStatus("2");
  64. }
  65. coupon.setCouponClub(couponClub);
  66. }
  67. }
  68. });
  69. vipCoupon.setCouponList(couponList);
  70. });
  71. return vipPage;
  72. }
  73. /**
  74. * 设置4张券的表单数据
  75. */
  76. public SvipCouponForm setSvipcouponForms(CmVipCoupon cmVipCoupon){
  77. SvipCouponForm svipcouponForm = new SvipCouponForm();
  78. svipcouponForm.setMonth(cmVipCoupon.getUseTime());
  79. if (null != cmVipCoupon.getCouponList()){
  80. List<CmCoupon> couponList = cmVipCoupon.getCouponList();
  81. for (int i = 0; i < couponList.size(); i++) {
  82. setSvipcouponForm(svipcouponForm, i, couponList.get(i));
  83. }
  84. }
  85. return svipcouponForm;
  86. };
  87. private SvipCouponForm setSvipcouponForm(SvipCouponForm svipcouponForm, int index, CmCoupon cmCoupon){
  88. if (index==0) {
  89. svipcouponForm.setCouponId1(cmCoupon.getId());
  90. svipcouponForm.setCouponAmount1(cmCoupon.getCouponAmount());
  91. svipcouponForm.setTouchPrice1(cmCoupon.getTouchPrice());
  92. svipcouponForm.setCouponType1(cmCoupon.getCouponType().toString());
  93. svipcouponForm.setCategoryType1(cmCoupon.getCategoryType());
  94. svipcouponForm.setProductType1(cmCoupon.getProductType());
  95. svipcouponForm.setShopId1(cmCoupon.getShopId());
  96. if (cmCoupon.getCouponType() == 0) {
  97. // 活动券,查询活动商品
  98. if ("2".equals(cmCoupon.getProductType())) {
  99. List<CmCouponAssociate> associateList = cmCouponService.findByProductType(cmCoupon);
  100. svipcouponForm.setAssociateList1(associateList);
  101. }
  102. }
  103. if (cmCoupon.getCouponType() == 3) {
  104. // 店铺券
  105. NewCmShop shop = cmCouponVipDao.getShopInfoByShopId(cmCoupon.getShopId());
  106. svipcouponForm.setShopName1(shop.getName());
  107. svipcouponForm.setShop1(shop);
  108. }
  109. } else if (index==1){
  110. svipcouponForm.setCouponId2(cmCoupon.getId());
  111. svipcouponForm.setCouponAmount2(cmCoupon.getCouponAmount());
  112. svipcouponForm.setTouchPrice2(cmCoupon.getTouchPrice());
  113. svipcouponForm.setCouponType2(cmCoupon.getCouponType().toString());
  114. svipcouponForm.setCategoryType2(cmCoupon.getCategoryType());
  115. svipcouponForm.setProductType2(cmCoupon.getProductType());
  116. svipcouponForm.setShopId2(cmCoupon.getShopId());
  117. if (cmCoupon.getCouponType() == 0) {
  118. // 活动券,查询活动商品
  119. if ("2".equals(cmCoupon.getProductType())) {
  120. List<CmCouponAssociate> associateList = cmCouponService.findByProductType(cmCoupon);
  121. svipcouponForm.setAssociateList2(associateList);
  122. }
  123. }
  124. if (cmCoupon.getCouponType() == 3) {
  125. // 店铺券
  126. NewCmShop shop = cmCouponVipDao.getShopInfoByShopId(cmCoupon.getShopId());
  127. svipcouponForm.setShopName2(shop.getName());
  128. svipcouponForm.setShop2(shop);
  129. }
  130. } else if (index==2){
  131. svipcouponForm.setCouponId3(cmCoupon.getId());
  132. svipcouponForm.setCouponAmount3(cmCoupon.getCouponAmount());
  133. svipcouponForm.setTouchPrice3(cmCoupon.getTouchPrice());
  134. svipcouponForm.setCouponType3(cmCoupon.getCouponType().toString());
  135. svipcouponForm.setCategoryType3(cmCoupon.getCategoryType());
  136. svipcouponForm.setProductType3(cmCoupon.getProductType());
  137. svipcouponForm.setShopId3(cmCoupon.getShopId());
  138. if (cmCoupon.getCouponType() == 0) {
  139. // 活动券,查询活动商品
  140. if ("2".equals(cmCoupon.getProductType())) {
  141. List<CmCouponAssociate> associateList = cmCouponService.findByProductType(cmCoupon);
  142. svipcouponForm.setAssociateList3(associateList);
  143. }
  144. }
  145. if (cmCoupon.getCouponType() == 3) {
  146. // 店铺券
  147. NewCmShop shop = cmCouponVipDao.getShopInfoByShopId(cmCoupon.getShopId());
  148. svipcouponForm.setShopName3(shop.getName());
  149. svipcouponForm.setShop3(shop);
  150. }
  151. } else if (index==3){
  152. svipcouponForm.setCouponId4(cmCoupon.getId());
  153. svipcouponForm.setCouponAmount4(cmCoupon.getCouponAmount());
  154. svipcouponForm.setTouchPrice4(cmCoupon.getTouchPrice());
  155. svipcouponForm.setCouponType4(cmCoupon.getCouponType().toString());
  156. svipcouponForm.setCategoryType4(cmCoupon.getCategoryType());
  157. svipcouponForm.setProductType4(cmCoupon.getProductType());
  158. svipcouponForm.setShopId4(cmCoupon.getShopId());
  159. if (cmCoupon.getCouponType() == 0) {
  160. // 活动券,查询活动商品
  161. if ("2".equals(cmCoupon.getProductType())) {
  162. List<CmCouponAssociate> associateList = cmCouponService.findByProductType(cmCoupon);
  163. svipcouponForm.setAssociateList4(associateList);
  164. }
  165. }
  166. if (cmCoupon.getCouponType() == 3) {
  167. // 店铺券
  168. NewCmShop shop = cmCouponVipDao.getShopInfoByShopId(cmCoupon.getShopId());
  169. svipcouponForm.setShopName4(shop.getName());
  170. svipcouponForm.setShop4(shop);
  171. }
  172. }
  173. return svipcouponForm;
  174. }
  175. /**
  176. * 保存4张券的表单数据
  177. * @param svipcouponForm
  178. */
  179. @Transactional(readOnly = false)
  180. public void saveVipCoupon(SvipCouponForm svipcouponForm){
  181. CmVipCoupon cmVipCoupon = new CmVipCoupon();
  182. cmVipCoupon.setId(svipcouponForm.getId());
  183. cmVipCoupon.setUseTime(svipcouponForm.getMonth());
  184. cmVipCoupon.setUpdateTime(new Date());
  185. cmVipCoupon.setStatus("1");
  186. cmVipCoupon.setDelFlag("0");
  187. // 解析 svipcouponForm -> 组装 CmCoupon 列表 保存
  188. CmCoupon coupon1 = new CmCoupon();
  189. CmCoupon coupon2 = new CmCoupon();
  190. CmCoupon coupon3 = new CmCoupon();
  191. CmCoupon coupon4 = new CmCoupon();
  192. boolean flag = false;
  193. if(StringUtils.isNotBlank(cmVipCoupon.getId())){
  194. // 修改
  195. coupon1.setId(svipcouponForm.getCouponId1());
  196. coupon2.setId(svipcouponForm.getCouponId2());
  197. coupon3.setId(svipcouponForm.getCouponId3());
  198. coupon4.setId(svipcouponForm.getCouponId4());
  199. cmCouponVipDao.updateVipCouponMonth(cmVipCoupon);
  200. } else {
  201. flag = true;
  202. cmCouponVipDao.insertVipCouponMonth(cmVipCoupon);
  203. }
  204. Date beginTime = DateUtil.getMinDay(svipcouponForm.getMonth());
  205. Date endTime = DateUtil.getMaxDay(svipcouponForm.getMonth());
  206. /*
  207. * 第1张券
  208. */
  209. coupon1.setName("超级会员专属优惠券");
  210. coupon1.setStartDate(beginTime);
  211. coupon1.setEndDate(endTime);
  212. coupon1.setCouponAmount(svipcouponForm.getCouponAmount1());
  213. coupon1.setTouchPrice(svipcouponForm.getTouchPrice1());
  214. coupon1.setStatus("1");
  215. // 0活动券 1品类券 3店铺券
  216. if ("0".equals(svipcouponForm.getCouponType1())){
  217. coupon1.setCouponType(0);
  218. coupon1.setProductType(svipcouponForm.getProductType1());
  219. if ("2".equals(svipcouponForm.getProductType1())){
  220. // 指定商品
  221. coupon1.setProductInfo(svipcouponForm.getProductInfo1());
  222. }
  223. } else if ("1".equals(svipcouponForm.getCouponType1())) {
  224. coupon1.setCategoryType(svipcouponForm.getCategoryType1());
  225. coupon1.setCouponType(1);
  226. } else if ("3".equals(svipcouponForm.getCouponType1())) {
  227. coupon1.setShopId(svipcouponForm.getShopId1());
  228. coupon1.setCouponType(3);
  229. }
  230. cmCouponService.save(coupon1);
  231. /*
  232. * 第2张券
  233. */
  234. coupon2.setName("超级会员专属优惠券");
  235. coupon2.setStartDate(beginTime);
  236. coupon2.setEndDate(endTime);
  237. coupon2.setCouponAmount(svipcouponForm.getCouponAmount2());
  238. coupon2.setTouchPrice(svipcouponForm.getTouchPrice2());
  239. coupon2.setStatus("1");
  240. // 0活动券 1品类券 3店铺券
  241. if ("0".equals(svipcouponForm.getCouponType2())){
  242. coupon2.setCouponType(0);
  243. coupon2.setProductType(svipcouponForm.getProductType2());
  244. if ("2".equals(svipcouponForm.getProductType2())){
  245. // 指定商品
  246. coupon2.setProductInfo(svipcouponForm.getProductInfo2());
  247. }
  248. } else if ("1".equals(svipcouponForm.getCouponType2())) {
  249. coupon2.setCategoryType(svipcouponForm.getCategoryType2());
  250. coupon2.setCouponType(1);
  251. } else if ("3".equals(svipcouponForm.getCouponType2())) {
  252. coupon2.setShopId(svipcouponForm.getShopId2());
  253. coupon2.setCouponType(3);
  254. }
  255. cmCouponService.save(coupon2);
  256. /*
  257. * 第3张券
  258. */
  259. coupon3.setName("超级会员专属优惠券");
  260. coupon3.setStartDate(beginTime);
  261. coupon3.setEndDate(endTime);
  262. coupon3.setCouponAmount(svipcouponForm.getCouponAmount3());
  263. coupon3.setTouchPrice(svipcouponForm.getTouchPrice3());
  264. coupon3.setStatus("1");
  265. // 0活动券 1品类券 3店铺券
  266. if ("0".equals(svipcouponForm.getCouponType3())){
  267. coupon3.setCouponType(0);
  268. coupon3.setProductType(svipcouponForm.getProductType3());
  269. if ("2".equals(svipcouponForm.getProductType3())){
  270. // 指定商品
  271. coupon3.setProductInfo(svipcouponForm.getProductInfo3());
  272. }
  273. } else if ("1".equals(svipcouponForm.getCouponType3())) {
  274. coupon3.setCategoryType(svipcouponForm.getCategoryType3());
  275. coupon3.setCouponType(1);
  276. } else if ("3".equals(svipcouponForm.getCouponType3())) {
  277. coupon3.setShopId(svipcouponForm.getShopId3());
  278. coupon3.setCouponType(3);
  279. }
  280. cmCouponService.save(coupon3);
  281. /*
  282. * 第4张券
  283. */
  284. coupon4.setName("超级会员专属优惠券");
  285. coupon4.setStartDate(beginTime);
  286. coupon4.setEndDate(endTime);
  287. coupon4.setCouponAmount(svipcouponForm.getCouponAmount4());
  288. coupon4.setTouchPrice(svipcouponForm.getTouchPrice4());
  289. coupon4.setStatus("1");
  290. // 0活动券 1品类券 3店铺券
  291. if ("0".equals(svipcouponForm.getCouponType4())){
  292. coupon4.setCouponType(0);
  293. coupon4.setProductType(svipcouponForm.getProductType4());
  294. if ("2".equals(svipcouponForm.getProductType4())){
  295. // 指定商品
  296. coupon4.setProductInfo(svipcouponForm.getProductInfo4());
  297. }
  298. } else if ("1".equals(svipcouponForm.getCouponType4())) {
  299. coupon4.setCategoryType(svipcouponForm.getCategoryType4());
  300. coupon4.setCouponType(1);
  301. } else if ("3".equals(svipcouponForm.getCouponType4())) {
  302. coupon4.setShopId(svipcouponForm.getShopId4());
  303. coupon4.setCouponType(3);
  304. }
  305. cmCouponService.save(coupon4);
  306. /*
  307. * vip优惠券月份关系
  308. */
  309. CmVipCouponRelation relation1 = new CmVipCouponRelation();
  310. CmVipCouponRelation relation2 = new CmVipCouponRelation();
  311. CmVipCouponRelation relation3 = new CmVipCouponRelation();
  312. CmVipCouponRelation relation4 = new CmVipCouponRelation();
  313. relation1.setMontId(cmVipCoupon.getId());
  314. relation2.setMontId(cmVipCoupon.getId());
  315. relation3.setMontId(cmVipCoupon.getId());
  316. relation4.setMontId(cmVipCoupon.getId());
  317. relation1.setCouponId(coupon1.getId());
  318. relation2.setCouponId(coupon2.getId());
  319. relation3.setCouponId(coupon3.getId());
  320. relation4.setCouponId(coupon4.getId());
  321. relation1.setUpdateTime(new Date());
  322. relation2.setUpdateTime(new Date());
  323. relation3.setUpdateTime(new Date());
  324. relation4.setUpdateTime(new Date());
  325. relation1.setDelFlag("0");
  326. relation2.setDelFlag("0");
  327. relation3.setDelFlag("0");
  328. relation4.setDelFlag("0");
  329. if (flag) {
  330. // 新增
  331. cmCouponVipDao.insertVipCouponRelation(relation1);
  332. cmCouponVipDao.insertVipCouponRelation(relation2);
  333. cmCouponVipDao.insertVipCouponRelation(relation3);
  334. cmCouponVipDao.insertVipCouponRelation(relation4);
  335. } else {
  336. // 修改
  337. cmCouponVipDao.updateVipCouponRelation(relation1);
  338. cmCouponVipDao.updateVipCouponRelation(relation2);
  339. cmCouponVipDao.updateVipCouponRelation(relation3);
  340. cmCouponVipDao.updateVipCouponRelation(relation4);
  341. }
  342. }
  343. @Override
  344. @Transactional(readOnly = false)
  345. public void delete(CmVipCoupon cmVipCoupon) {
  346. cmVipCoupon.setDelFlag("1");
  347. List<CmCoupon> couponList = cmVipCoupon.getCouponList();
  348. for (CmCoupon coupon : couponList) {
  349. coupon.setDelFlag("1");
  350. // 逻辑删除
  351. cmCouponService.delete(coupon);
  352. }
  353. cmCouponVipDao.updateVipCouponMonth(cmVipCoupon);
  354. // 逻辑删除关系表
  355. cmCouponVipDao.deleteByMonthId(cmVipCoupon.getId());
  356. }
  357. @Transactional(readOnly = false)
  358. public void close(CmVipCoupon cmVipCoupon) {
  359. cmVipCoupon.setStatus("2");
  360. List<CmCoupon> couponList = cmVipCoupon.getCouponList();
  361. for (CmCoupon coupon : couponList) {
  362. coupon.setStatus("2");
  363. cmCouponService.save(coupon);
  364. }
  365. cmCouponVipDao.updateVipCouponMonth(cmVipCoupon);
  366. }
  367. @Transactional(readOnly = false)
  368. public void open(CmVipCoupon cmVipCoupon) {
  369. cmVipCoupon.setStatus("1");
  370. List<CmCoupon> couponList = cmVipCoupon.getCouponList();
  371. for (CmCoupon coupon : couponList) {
  372. coupon.setStatus("1");
  373. cmCouponService.save(coupon);
  374. }
  375. cmCouponVipDao.updateVipCouponMonth(cmVipCoupon);
  376. }
  377. }