From c25fecae568a074e338bce625a92960aca859fb8 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期四, 15 一月 2026 16:04:10 +0800
Subject: [PATCH] 经销商管理

---
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java |  143 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 142 insertions(+), 1 deletions(-)

diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java
index ae76be3..c1c50ca 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java
@@ -11,6 +11,7 @@
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.*;
 import com.doumee.dao.business.model.*;
+import com.doumee.dao.system.dto.MemberCouponAddDTO;
 import com.doumee.dao.system.model.SystemUser;
 import com.doumee.dao.web.dto.CouponDTO;
 import com.doumee.dao.web.dto.MemberCouponDTO;
@@ -29,6 +30,7 @@
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
@@ -65,6 +67,146 @@
 
     @Autowired
     private MemberMapper memberMapper;
+
+    @Override
+    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+    public    String addBatch(MemberCouponAddDTO memberCoupon){
+        checkAddBatchParamValid(memberCoupon);
+
+        int num = 0;
+        List<Coupon> couponList = getCouponListByParam(memberCoupon);
+        List<Member> memberList = getMemberListByParam(memberCoupon);
+        List<MemberCoupon>  addList = new ArrayList<>();
+        int index =1;
+        LoginUserInfo loginUserInfo = (LoginUserInfo)SecurityUtils.getSubject().getPrincipal();
+        Date now = new Date();
+        for(Coupon param  : memberCoupon.getAddCouponList()){
+            Coupon  coupon = getCouponFromListById(param.getId(),couponList);
+            if(coupon == null){
+                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗��"+index+"銆戜釜浼樻儬鍒告煡璇㈡棤鏁堬紝璇峰埛鏂伴〉闈㈤噸鏂帮紒");
+            }
+            for(Member member : memberList){
+                for (int i = 0; i < Constants.formatLongNum(param.getNum()); i++) {
+                    //鎸ㄤ釜閫�
+                    addList.add(initMemberCouponByParam(coupon,member,loginUserInfo,now));
+                }
+                num++;
+            }
+            index++;
+        }
+
+
+        if(addList.size()>0){
+            //鎵归噺鎻掑叆鏁版嵁
+            memberCouponMapper.insert(addList);
+        }
+        return "鎿嶄綔鎴愬姛,鎴愬姛浜哄憳鏁伴噺锛�"+num+",鍏卞彂鏀句紭鎯犲埜鏁伴噺锛�"+addList.size();
+
+    }
+
+    private MemberCoupon initMemberCouponByParam(Coupon coupon, Member member, LoginUserInfo loginUserInfo ,Date now) {
+        MemberCoupon insert = new MemberCoupon();
+        insert.setCreator(loginUserInfo.getId());
+        insert.setCreateDate(now);
+        insert.setEditor(loginUserInfo.getId());
+        insert.setEditDate(now);
+        insert.setIsdeleted(Constants.ZERO);
+        insert.setRemark("瀹氬悜鍙戞斁");
+        insert.setMemberId(member.getId());
+        insert.setShopId(coupon.getShopId());
+        insert.setType(coupon.getType());
+        insert.setLimitPrice(coupon.getLimitPrice());
+        insert.setPrice(coupon.getPrice());
+        if(Constants.equalsObject(coupon.getUseType(),Constants.ZERO)){
+            //濡傛灉鏄浐瀹氭椂娈�
+            insert.setStartDate(coupon.getStartDate());
+            insert.setEndDate(coupon.getEndDate());
+        }else{
+            //鍥哄畾鏃堕暱 //鎺ㄨ繜澶╂暟
+            insert.setEndDate(DateUtil.addDaysToDate(now,Constants.formatIntegerNum(coupon.getValidDays())));
+            insert.setStartDate(now);
+        }
+        insert.setGetMethod(Constants.TWO);//瀹氬悜鍙戞斁
+        insert.setIntegral(coupon.getIntegral());
+        insert.setStatus(Constants.ZERO);//鏈娇鐢�
+        insert.setInfo(coupon.getInfo());
+//        insert.setBackIntegral(coupon.getB);
+        insert.setName(coupon.getName());
+        insert.setApplyIds(coupon.getApplyIds());
+        insert.setApplyType(coupon.getApplyType());
+        insert.setCouponId(coupon.getId());
+        return  insert;
+    }
+
+    private Coupon getCouponFromListById(Integer id, List<Coupon> couponList) {
+        for(Coupon c : couponList){
+            if(Constants.equalsObject(id,c.getId())){
+                return c;
+            }
+        }
+        return null;
+    }
+
+
+    private List<Member> getMemberListByParam(MemberCouponAddDTO memberCoupon) {
+        List<Member>  list = memberMapper.selectList(new QueryWrapper<Member>().lambda()
+                .eq(Member::getIsdeleted,Constants.ZERO)
+                .eq(memberCoupon.getAddType() == Constants.ZERO,Member::getId,memberCoupon.getAddMemberIds())
+                .in(memberCoupon.getAddType() == Constants.ONE,Member::getPhone,memberCoupon.getPhones()));
+        if(list == null || list.size()==0){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝鏈煡璇㈠埌鏈夋晥鐨勭敤鎴蜂俊鎭紒");
+        }
+
+        return list;
+    }
+
+    private List<Coupon> getCouponListByParam(MemberCouponAddDTO memberCoupon) {
+        List<Integer> ids = new ArrayList<>();
+        for(Coupon coupon : memberCoupon.getAddCouponList()){
+            if(coupon.getId() ==null || Constants.formatLongNum(coupon.getNum())==0){
+                throw new BusinessException(ResponseStatus.BAD_REQUEST);
+            }
+            ids.add(coupon.getId());
+        }
+        List<Coupon> list =  couponMapper.selectList(new QueryWrapper<Coupon>().lambda()
+                .eq(Coupon::getStatus,Constants.ZERO)
+                .eq(Coupon::getIsdeleted,Constants.ZERO)
+                .in(Coupon::getId,ids));
+
+        if(list == null || list.size()==0){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝鏈煡璇㈠埌鏈夋晥浼樻儬鍒告暟鎹�,璇峰埛鏂伴〉闈㈤噸璇曪紒");
+        }
+
+        return  list;
+    }
+
+    private  void checkAddBatchParamValid(MemberCouponAddDTO memberCoupon) {
+        if(memberCoupon.getAddType() == null || memberCoupon.getAddCouponList()==null || memberCoupon.getAddCouponList().size()==0){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        if(Constants.equalsObject(memberCoupon.getAddType(),Constants.ZERO)){
+            //鎸囧畾浜哄憳
+            if( memberCoupon.getAddMemberIds() ==null){
+                throw new BusinessException(ResponseStatus.BAD_REQUEST);
+            }
+        }else   if(Constants.equalsObject(memberCoupon.getAddType(),Constants.ONE)){
+            //鎸囧畾鎵嬫満鍙�
+            if( StringUtils.isBlank(memberCoupon.getAddMemberPhones())){
+                throw new BusinessException(ResponseStatus.BAD_REQUEST);
+            }
+            String[] ss =memberCoupon.getAddMemberPhones().split("\n");
+            if(ss == null ||ss.length==0){
+                throw new BusinessException(ResponseStatus.BAD_REQUEST);
+            }
+            memberCoupon.setPhones(Arrays.asList(ss));
+
+        }else  if(Constants.equalsObject(memberCoupon.getAddType(),Constants.TWO)){
+            //鍏ㄩ儴浼氬憳
+        }else{
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+    }
+
     @Override
     public Integer create(MemberCoupon memberCoupon) {
         LoginUserInfo loginUserInfo = (LoginUserInfo)SecurityUtils.getSubject().getPrincipal();
@@ -89,7 +231,6 @@
         if(memberCouponMapper.selectCount(queryWrapper) > Constants.ZERO){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "宸插厬鎹㈣浼樻儬鍒�,鏃犳硶鍏戞崲锛�");
         };
-
         MemberCoupon insert = new MemberCoupon();
         Date now = new Date();
         insert.setCreator(loginUserInfo.getId());

--
Gitblit v1.9.3