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 | 172 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 166 insertions(+), 6 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 ad565c4..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,8 @@
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;
import com.doumee.dao.web.request.PayDetailRequest;
@@ -28,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;
@@ -64,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();
@@ -88,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());
@@ -173,20 +315,39 @@
IPage<MemberCoupon> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
MPJLambdaWrapper<MemberCoupon> queryWrapper = new MPJLambdaWrapper<>();
Utils.MP.blankToNull(pageWrap.getModel());
-
queryWrapper.selectAll(MemberCoupon.class);
queryWrapper.selectAs(Member::getNickname,MemberCoupon::getNikeName);
-
+ queryWrapper.selectAs(Goodsorder::getCode,MemberCoupon::getOrderCode);
+ queryWrapper.selectAs(Goodsorder::getCouponPrice,MemberCoupon::getCouponPrice);//浼樻儬閲戦
+ queryWrapper.selectAs(SystemUser::getUsername,MemberCoupon::getCreatorName);
queryWrapper.leftJoin(Member.class,Member::getId,MemberCoupon::getMemberId);
-
+ queryWrapper.leftJoin(Goodsorder.class,Goodsorder::getId,MemberCoupon::getOrderId);
+ queryWrapper.leftJoin(SystemUser.class,SystemUser::getId,MemberCoupon::getCreator);
queryWrapper.eq(MemberCoupon::getIsdeleted, Constants.ZERO);
- queryWrapper.eq(pageWrap.getModel().getStatus()!=null,MemberCoupon::getStatus, pageWrap.getModel().getStatus());
+ if(pageWrap.getModel().getStatus()!=null && pageWrap.getModel().getStatus()!=2){
+ queryWrapper.eq(pageWrap.getModel().getStatus()!=null,MemberCoupon::getStatus, pageWrap.getModel().getStatus());
+ } else if (pageWrap.getModel().getStatus()!=null && pageWrap.getModel().getStatus()==2) {
+ //鏌ヨ宸茶繃鏈�(鏈娇鐢紝鍒囧凡杩囦簡浣跨敤鏈熼檺锛�
+ queryWrapper.eq( MemberCoupon::getStatus, Constants.ZERO);
+ queryWrapper.lt( MemberCoupon::getEndDate, new Date());
+ }
+ queryWrapper.eq(pageWrap.getModel().getOrderCode()!=null,Goodsorder::getCode, pageWrap.getModel().getOrderCode());
queryWrapper.eq(pageWrap.getModel().getGetMethod()!=null,MemberCoupon::getGetMethod, pageWrap.getModel().getGetMethod());
queryWrapper.and(StringUtils.isNotBlank(pageWrap.getModel().getNikeName()),ms -> ms.like( Member::getNickname, pageWrap.getModel().getNikeName()).
or().eq( Member::getName, pageWrap.getModel().getNikeName()).
or().eq( Member::getPhone, pageWrap.getModel().getNikeName()));
queryWrapper.orderByDesc(MemberCoupon::getCreateDate);
IPage<MemberCoupon> result = memberCouponJoinMapper.selectJoinPage(page, MemberCoupon.class, queryWrapper);
+ if(result!=null && result.getRecords()!=null){
+ for(MemberCoupon model :result.getRecords()){
+ if(Constants.equalsInteger(model.getStatus(),Constants.ZERO)
+ && model.getEndDate()!=null
+ && model.getEndDate().before(new Date())){
+ //宸茶繃鏈�
+ model.setStatus(Constants.TWO);
+ }
+ }
+ }
return PageData.from(result);
}
@@ -252,7 +413,6 @@
}
}
}
-
return memberCouponResponse;
}
--
Gitblit v1.9.3