123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420 |
- package com.caimei.modules.coupon.service;
- import com.caimei.modules.coupon.dao.CmCouponDao;
- import com.caimei.modules.coupon.dao.CmCouponVipDao;
- import com.caimei.modules.coupon.entity.*;
- import com.caimei.modules.user.entity.NewCmShop;
- import com.caimei.modules.utils.DateUtil;
- import com.thinkgem.jeesite.common.persistence.Page;
- import com.thinkgem.jeesite.common.service.CrudService;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- /**
- * @author zzj
- */
- @Service
- @Transactional(readOnly = true)
- public class CmVipCouponService extends CrudService<CmCouponVipDao, CmVipCoupon> {
- @Autowired
- private CmCouponService cmCouponService;
- @Autowired
- private CmCouponVipDao cmCouponVipDao;
- @Autowired
- private CmCouponDao cmCouponDao;
- @Override
- public CmVipCoupon get(String id) {
- CmVipCoupon vipCoupon = super.get(id);
- if (null != vipCoupon) {
- setVipCouponStatus(vipCoupon);
- List<CmCoupon> couponList = new ArrayList<>();
- List<String> bindCoupons = cmCouponVipDao.getBindCoupons(id);
- for (String s : bindCoupons) {
- CmCoupon cmCoupon = cmCouponService.get(s);
- couponList.add(cmCoupon);
- }
- vipCoupon.setCouponList(couponList);
- }
- return vipCoupon;
- }
- @Override
- public Page<CmVipCoupon> findPage(Page<CmVipCoupon> page, CmVipCoupon cmVipCoupon) {
- Page<CmVipCoupon> vipPage = super.findPage(page, cmVipCoupon);
- List<CmVipCoupon> cmVipCouponList = vipPage.getList();
- cmVipCouponList.forEach(vipCoupon -> {
- setVipCouponStatus(vipCoupon);
- List<String> bindCoupons = cmCouponVipDao.getBindCoupons(vipCoupon.getId());
- List<CmCoupon> couponList = cmCouponVipDao.getCouponListByIds(bindCoupons, cmVipCoupon.getCouponType(), cmVipCoupon.getStatus());
- Date date = new Date();
- couponList.forEach(coupon -> {
- cmCouponService.setCouponStatus(coupon, date);
- if ("1".equals(coupon.getCouponsMode())) {
- //兑换码券
- Integer num = cmCouponDao.findQuantityRedeemed(coupon.getId());
- coupon.setCodeNum(num);
- } else {
- if (2 == coupon.getCouponType()) {
- //用户专享劵
- CmCouponClub couponClub = cmCouponDao.findCouponClub(coupon.getId());
- if (couponClub == null) {
- coupon.setClaimStatus("1");
- } else {
- coupon.setClaimStatus("2");
- }
- coupon.setCouponClub(couponClub);
- }
- }
- });
- vipCoupon.setCouponList(couponList);
- });
- return vipPage;
- }
- /**
- * 设置会员优惠生效状态
- */
- private void setVipCouponStatus(CmVipCoupon vipCoupon) {
- if (!"2".equals(vipCoupon.getStatus())) {
- try {
- SimpleDateFormat df = new SimpleDateFormat("yyyy-MM");
- String current = df.format(new Date());
- String useTime = vipCoupon.getUseTime();
- // 0未生效 1已生效 2已关闭 3已失效
- if (df.parse(useTime).after(df.parse(current))) {
- // 未生效
- vipCoupon.setStatus("0");
- } else if (df.parse(useTime).before(df.parse(current))) {
- // 已失效
- vipCoupon.setStatus("3");
- } else {
- // 生效
- vipCoupon.setStatus("1");
- }
- } catch (ParseException e) {
- e.printStackTrace();
- }
- }
- }
- /**
- * 设置4张券的表单数据
- */
- public SvipCouponForm setSvipcouponForms(CmVipCoupon cmVipCoupon){
- SvipCouponForm svipcouponForm = new SvipCouponForm();
- svipcouponForm.setMonth(cmVipCoupon.getUseTime());
- if (null != cmVipCoupon.getCouponList()){
- List<CmCoupon> couponList = cmVipCoupon.getCouponList();
- for (int i = 0; i < couponList.size(); i++) {
- setSvipcouponForm(svipcouponForm, i, couponList.get(i));
- }
- }
- return svipcouponForm;
- };
- private SvipCouponForm setSvipcouponForm(SvipCouponForm svipcouponForm, int index, CmCoupon cmCoupon){
- if (index==0) {
- svipcouponForm.setCouponId1(cmCoupon.getId());
- svipcouponForm.setCouponAmount1(cmCoupon.getCouponAmount());
- svipcouponForm.setTouchPrice1(cmCoupon.getTouchPrice());
- svipcouponForm.setCouponType1(cmCoupon.getCouponType().toString());
- svipcouponForm.setCategoryType1(cmCoupon.getCategoryType());
- svipcouponForm.setProductType1(cmCoupon.getProductType());
- svipcouponForm.setShopId1(cmCoupon.getShopId());
- if (cmCoupon.getCouponType() == 0) {
- // 活动券,查询活动商品
- if ("2".equals(cmCoupon.getProductType())) {
- List<CmCouponAssociate> associateList = cmCouponService.findByProductType(cmCoupon);
- svipcouponForm.setAssociateList1(associateList);
- }
- }
- if (cmCoupon.getCouponType() == 3) {
- // 店铺券
- NewCmShop shop = cmCouponVipDao.getShopInfoByShopId(cmCoupon.getShopId());
- svipcouponForm.setShopName1(shop.getName());
- svipcouponForm.setShop1(shop);
- }
- } else if (index==1){
- svipcouponForm.setCouponId2(cmCoupon.getId());
- svipcouponForm.setCouponAmount2(cmCoupon.getCouponAmount());
- svipcouponForm.setTouchPrice2(cmCoupon.getTouchPrice());
- svipcouponForm.setCouponType2(cmCoupon.getCouponType().toString());
- svipcouponForm.setCategoryType2(cmCoupon.getCategoryType());
- svipcouponForm.setProductType2(cmCoupon.getProductType());
- svipcouponForm.setShopId2(cmCoupon.getShopId());
- if (cmCoupon.getCouponType() == 0) {
- // 活动券,查询活动商品
- if ("2".equals(cmCoupon.getProductType())) {
- List<CmCouponAssociate> associateList = cmCouponService.findByProductType(cmCoupon);
- svipcouponForm.setAssociateList2(associateList);
- }
- }
- if (cmCoupon.getCouponType() == 3) {
- // 店铺券
- NewCmShop shop = cmCouponVipDao.getShopInfoByShopId(cmCoupon.getShopId());
- svipcouponForm.setShopName2(shop.getName());
- svipcouponForm.setShop2(shop);
- }
- } else if (index==2){
- svipcouponForm.setCouponId3(cmCoupon.getId());
- svipcouponForm.setCouponAmount3(cmCoupon.getCouponAmount());
- svipcouponForm.setTouchPrice3(cmCoupon.getTouchPrice());
- svipcouponForm.setCouponType3(cmCoupon.getCouponType().toString());
- svipcouponForm.setCategoryType3(cmCoupon.getCategoryType());
- svipcouponForm.setProductType3(cmCoupon.getProductType());
- svipcouponForm.setShopId3(cmCoupon.getShopId());
- if (cmCoupon.getCouponType() == 0) {
- // 活动券,查询活动商品
- if ("2".equals(cmCoupon.getProductType())) {
- List<CmCouponAssociate> associateList = cmCouponService.findByProductType(cmCoupon);
- svipcouponForm.setAssociateList3(associateList);
- }
- }
- if (cmCoupon.getCouponType() == 3) {
- // 店铺券
- NewCmShop shop = cmCouponVipDao.getShopInfoByShopId(cmCoupon.getShopId());
- svipcouponForm.setShopName3(shop.getName());
- svipcouponForm.setShop3(shop);
- }
- } else if (index==3){
- svipcouponForm.setCouponId4(cmCoupon.getId());
- svipcouponForm.setCouponAmount4(cmCoupon.getCouponAmount());
- svipcouponForm.setTouchPrice4(cmCoupon.getTouchPrice());
- svipcouponForm.setCouponType4(cmCoupon.getCouponType().toString());
- svipcouponForm.setCategoryType4(cmCoupon.getCategoryType());
- svipcouponForm.setProductType4(cmCoupon.getProductType());
- svipcouponForm.setShopId4(cmCoupon.getShopId());
- if (cmCoupon.getCouponType() == 0) {
- // 活动券,查询活动商品
- if ("2".equals(cmCoupon.getProductType())) {
- List<CmCouponAssociate> associateList = cmCouponService.findByProductType(cmCoupon);
- svipcouponForm.setAssociateList4(associateList);
- }
- }
- if (cmCoupon.getCouponType() == 3) {
- // 店铺券
- NewCmShop shop = cmCouponVipDao.getShopInfoByShopId(cmCoupon.getShopId());
- svipcouponForm.setShopName4(shop.getName());
- svipcouponForm.setShop4(shop);
- }
- }
- return svipcouponForm;
- }
- /**
- * 保存4张券的表单数据
- * @param svipcouponForm
- */
- @Transactional(readOnly = false)
- public void saveVipCoupon(SvipCouponForm svipcouponForm){
- CmVipCoupon cmVipCoupon = new CmVipCoupon();
- cmVipCoupon.setId(svipcouponForm.getId());
- cmVipCoupon.setUseTime(svipcouponForm.getMonth());
- cmVipCoupon.setUpdateTime(new Date());
- cmVipCoupon.setStatus("1");
- cmVipCoupon.setDelFlag("0");
- // 解析 svipcouponForm -> 组装 CmCoupon 列表 保存
- CmCoupon coupon1 = new CmCoupon();
- CmCoupon coupon2 = new CmCoupon();
- CmCoupon coupon3 = new CmCoupon();
- CmCoupon coupon4 = new CmCoupon();
- boolean flag = false;
- if(StringUtils.isNotBlank(cmVipCoupon.getId())){
- // 修改
- coupon1.setId(svipcouponForm.getCouponId1());
- coupon2.setId(svipcouponForm.getCouponId2());
- coupon3.setId(svipcouponForm.getCouponId3());
- coupon4.setId(svipcouponForm.getCouponId4());
- cmCouponVipDao.updateVipCouponMonth(cmVipCoupon);
- } else {
- flag = true;
- cmCouponVipDao.insertVipCouponMonth(cmVipCoupon);
- }
- Date beginTime = DateUtil.getMinDay(svipcouponForm.getMonth());
- Date endTime = DateUtil.getMaxDay(svipcouponForm.getMonth());
- /*
- * 第1张券
- */
- coupon1.setName("超级会员专属优惠券");
- coupon1.setStartDate(beginTime);
- coupon1.setEndDate(endTime);
- coupon1.setCouponAmount(svipcouponForm.getCouponAmount1());
- coupon1.setTouchPrice(svipcouponForm.getTouchPrice1());
- coupon1.setStatus("1");
- // 0活动券 1品类券 3店铺券
- if ("0".equals(svipcouponForm.getCouponType1())){
- coupon1.setCouponType(0);
- coupon1.setProductType(svipcouponForm.getProductType1());
- if ("2".equals(svipcouponForm.getProductType1())){
- // 指定商品
- coupon1.setProductInfo(svipcouponForm.getProductInfo1());
- }
- } else if ("1".equals(svipcouponForm.getCouponType1())) {
- coupon1.setCategoryType(svipcouponForm.getCategoryType1());
- coupon1.setCouponType(1);
- } else if ("3".equals(svipcouponForm.getCouponType1())) {
- coupon1.setShopId(svipcouponForm.getShopId1());
- coupon1.setCouponType(3);
- }
- cmCouponService.save(coupon1);
- /*
- * 第2张券
- */
- coupon2.setName("超级会员专属优惠券");
- coupon2.setStartDate(beginTime);
- coupon2.setEndDate(endTime);
- coupon2.setCouponAmount(svipcouponForm.getCouponAmount2());
- coupon2.setTouchPrice(svipcouponForm.getTouchPrice2());
- coupon2.setStatus("1");
- // 0活动券 1品类券 3店铺券
- if ("0".equals(svipcouponForm.getCouponType2())){
- coupon2.setCouponType(0);
- coupon2.setProductType(svipcouponForm.getProductType2());
- if ("2".equals(svipcouponForm.getProductType2())){
- // 指定商品
- coupon2.setProductInfo(svipcouponForm.getProductInfo2());
- }
- } else if ("1".equals(svipcouponForm.getCouponType2())) {
- coupon2.setCategoryType(svipcouponForm.getCategoryType2());
- coupon2.setCouponType(1);
- } else if ("3".equals(svipcouponForm.getCouponType2())) {
- coupon2.setShopId(svipcouponForm.getShopId2());
- coupon2.setCouponType(3);
- }
- cmCouponService.save(coupon2);
- /*
- * 第3张券
- */
- coupon3.setName("超级会员专属优惠券");
- coupon3.setStartDate(beginTime);
- coupon3.setEndDate(endTime);
- coupon3.setCouponAmount(svipcouponForm.getCouponAmount3());
- coupon3.setTouchPrice(svipcouponForm.getTouchPrice3());
- coupon3.setStatus("1");
- // 0活动券 1品类券 3店铺券
- if ("0".equals(svipcouponForm.getCouponType3())){
- coupon3.setCouponType(0);
- coupon3.setProductType(svipcouponForm.getProductType3());
- if ("2".equals(svipcouponForm.getProductType3())){
- // 指定商品
- coupon3.setProductInfo(svipcouponForm.getProductInfo3());
- }
- } else if ("1".equals(svipcouponForm.getCouponType3())) {
- coupon3.setCategoryType(svipcouponForm.getCategoryType3());
- coupon3.setCouponType(1);
- } else if ("3".equals(svipcouponForm.getCouponType3())) {
- coupon3.setShopId(svipcouponForm.getShopId3());
- coupon3.setCouponType(3);
- }
- cmCouponService.save(coupon3);
- /*
- * 第4张券
- */
- coupon4.setName("超级会员专属优惠券");
- coupon4.setStartDate(beginTime);
- coupon4.setEndDate(endTime);
- coupon4.setCouponAmount(svipcouponForm.getCouponAmount4());
- coupon4.setTouchPrice(svipcouponForm.getTouchPrice4());
- coupon4.setStatus("1");
- // 0活动券 1品类券 3店铺券
- if ("0".equals(svipcouponForm.getCouponType4())){
- coupon4.setCouponType(0);
- coupon4.setProductType(svipcouponForm.getProductType4());
- if ("2".equals(svipcouponForm.getProductType4())){
- // 指定商品
- coupon4.setProductInfo(svipcouponForm.getProductInfo4());
- }
- } else if ("1".equals(svipcouponForm.getCouponType4())) {
- coupon4.setCategoryType(svipcouponForm.getCategoryType4());
- coupon4.setCouponType(1);
- } else if ("3".equals(svipcouponForm.getCouponType4())) {
- coupon4.setShopId(svipcouponForm.getShopId4());
- coupon4.setCouponType(3);
- }
- cmCouponService.save(coupon4);
- /*
- * vip优惠券月份关系
- */
- CmVipCouponRelation relation1 = new CmVipCouponRelation();
- CmVipCouponRelation relation2 = new CmVipCouponRelation();
- CmVipCouponRelation relation3 = new CmVipCouponRelation();
- CmVipCouponRelation relation4 = new CmVipCouponRelation();
- relation1.setMontId(cmVipCoupon.getId());
- relation2.setMontId(cmVipCoupon.getId());
- relation3.setMontId(cmVipCoupon.getId());
- relation4.setMontId(cmVipCoupon.getId());
- relation1.setCouponId(coupon1.getId());
- relation2.setCouponId(coupon2.getId());
- relation3.setCouponId(coupon3.getId());
- relation4.setCouponId(coupon4.getId());
- relation1.setUpdateTime(new Date());
- relation2.setUpdateTime(new Date());
- relation3.setUpdateTime(new Date());
- relation4.setUpdateTime(new Date());
- relation1.setDelFlag("0");
- relation2.setDelFlag("0");
- relation3.setDelFlag("0");
- relation4.setDelFlag("0");
- if (flag) {
- // 新增
- cmCouponVipDao.insertVipCouponRelation(relation1);
- cmCouponVipDao.insertVipCouponRelation(relation2);
- cmCouponVipDao.insertVipCouponRelation(relation3);
- cmCouponVipDao.insertVipCouponRelation(relation4);
- } else {
- // 修改
- cmCouponVipDao.updateVipCouponRelation(relation1);
- cmCouponVipDao.updateVipCouponRelation(relation2);
- cmCouponVipDao.updateVipCouponRelation(relation3);
- cmCouponVipDao.updateVipCouponRelation(relation4);
- }
- }
- @Override
- @Transactional(readOnly = false)
- public void delete(CmVipCoupon cmVipCoupon) {
- cmVipCoupon.setDelFlag("1");
- List<CmCoupon> couponList = cmVipCoupon.getCouponList();
- for (CmCoupon coupon : couponList) {
- coupon.setDelFlag("1");
- // 逻辑删除
- cmCouponService.delete(coupon);
- }
- cmCouponVipDao.updateVipCouponMonth(cmVipCoupon);
- // 逻辑删除关系表
- cmCouponVipDao.deleteByMonthId(cmVipCoupon.getId());
- }
- @Transactional(readOnly = false)
- public void close(CmVipCoupon cmVipCoupon) {
- cmVipCoupon.setStatus("2");
- List<CmCoupon> couponList = cmVipCoupon.getCouponList();
- for (CmCoupon coupon : couponList) {
- coupon.setStatus("2");
- cmCouponService.save(coupon);
- }
- cmCouponVipDao.updateVipCouponMonth(cmVipCoupon);
- }
- @Transactional(readOnly = false)
- public void open(CmVipCoupon cmVipCoupon) {
- cmVipCoupon.setStatus("1");
- List<CmCoupon> couponList = cmVipCoupon.getCouponList();
- for (CmCoupon coupon : couponList) {
- coupon.setStatus("1");
- cmCouponService.save(coupon);
- }
- cmCouponVipDao.updateVipCouponMonth(cmVipCoupon);
- }
- }
|