From c74a6f59490cfb9a0ee37f70427739b74e7fbd58 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期三, 20 五月 2026 08:50:29 +0800
Subject: [PATCH] 代码生成
---
server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java | 141 +++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 141 insertions(+), 0 deletions(-)
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index d7fe3f3..88412db 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -3,6 +3,7 @@
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
import com.alibaba.fastjson.JSONObject;
+import com.doumee.biz.system.OperationConfigBiz;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.config.jwt.JwtTokenUtil;
import com.doumee.config.wx.WxMiniConfig;
@@ -13,15 +14,20 @@
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.MemberMapper;
+import com.doumee.dao.business.CouponMapper;
+import com.doumee.dao.business.MemberCouponMapper;
import com.doumee.dao.business.OrdersMapper;
import com.doumee.dao.business.ShopInfoMapper;
import com.doumee.dao.business.SmsrecordMapper;
import com.doumee.dao.business.model.Member;
+import com.doumee.dao.business.model.Coupon;
+import com.doumee.dao.business.model.MemberCoupon;
import com.doumee.dao.business.model.Orders;
import com.doumee.dao.business.model.ShopInfo;
import com.doumee.dao.business.model.MemberRevenue;
import com.doumee.dao.business.model.Smsrecord;
import com.doumee.dao.dto.MemberListQueryDTO;
+import com.doumee.dao.dto.OperationConfigDTO;
import com.doumee.dao.dto.UpdMobileRequest;
import com.doumee.dao.dto.WxPhoneRequest;
import com.doumee.dao.vo.AccountResponse;
@@ -40,6 +46,7 @@
import io.swagger.annotations.ApiModelProperty;
import me.chanjar.weixin.common.error.WxErrorException;
import nonapi.io.github.classgraph.json.Id;
+import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
@@ -49,6 +56,7 @@
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Calendar;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
@@ -63,6 +71,7 @@
* @author 姹熻箘韫�
* @date 2025/07/09 12:00
*/
+@Slf4j
@Service
public class MemberServiceImpl implements MemberService {
@@ -86,6 +95,15 @@
@Autowired
private OrdersMapper ordersMapper;
+
+ @Autowired
+ private OperationConfigBiz operationConfigBiz;
+
+ @Autowired
+ private CouponMapper couponMapper;
+
+ @Autowired
+ private MemberCouponMapper memberCouponMapper;
@Override
@@ -338,6 +356,8 @@
member.setAutoReceiveStatus(Constants.ONE);
member.setUserType(Constants.ZERO);
memberMapper.insert(member);
+ // 娉ㄥ唽璧犻�佷紭鎯犲埜
+ giftRegisterCoupons(member);
}
String token = JwtTokenUtil.generateTokenForRedis(member.getId(), Constants.ZERO, JSONObject.toJSONString(member), redisTemplate);
AccountResponse accountResponse = new AccountResponse();
@@ -408,6 +428,7 @@
|| ( StringUtils.isBlank(member.getCoverImage())
&& StringUtils.isBlank(member.getName())
&& StringUtils.isBlank(member.getNickName())
+ && StringUtils.isBlank(member.getEmail())
&& Objects.isNull(member.getAutoReceiveStatus()) )){
throw new BusinessException(ResponseStatus.BAD_REQUEST);
}
@@ -415,6 +436,7 @@
.set(StringUtils.isNotBlank(member.getNickName()),Member::getNickName,member.getNickName())
.set(StringUtils.isNotBlank(member.getName()),Member::getName,member.getName())
.set(StringUtils.isNotBlank(member.getCoverImage()),Member::getCoverImage,member.getCoverImage())
+ .set(StringUtils.isNotBlank(member.getEmail()),Member::getEmail,member.getEmail())
.set(Objects.nonNull(member.getAutoReceiveStatus()),Member::getAutoReceiveStatus,member.getAutoReceiveStatus())
.set(Member::getUpdateTime,new Date())
.eq(Member::getId,member.getId()));
@@ -434,6 +456,7 @@
userCenterVO.setTelephone(member.getTelephone());
userCenterVO.setCoverImage(member.getCoverImage());
userCenterVO.setOpenid(member.getOpenid());
+ userCenterVO.setEmail(member.getEmail());
if(StringUtils.isNotBlank(member.getCoverImage())){
String path = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()
+systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILES).getCode();
@@ -702,4 +725,122 @@
);
}
+ @Override
+ public void giftRegisterCoupon() {
+ // 1. 璇诲彇閰嶇疆
+ OperationConfigDTO config = operationConfigBiz.getConfig();
+ String yearsStr = config.getRegisterCouponYears();
+ String maxGiftStr = config.getRegisterCouponGiftCount();
+ String couponIdsStr = config.getRegisterCouponId();
+ if (StringUtils.isBlank(yearsStr) || StringUtils.isBlank(maxGiftStr) || StringUtils.isBlank(couponIdsStr)) {
+ return;
+ }
+ int configYears = Integer.parseInt(yearsStr);
+ int maxGiftCount = Integer.parseInt(maxGiftStr);
+ if (configYears <= 0 || maxGiftCount <= 0) {
+ return;
+ }
+
+ // 2. 瑙f瀽浼樻儬鍒窱D鍒楄〃锛屾煡璇㈡湁鏁堜紭鎯犲埜
+ List<Integer> couponIdList = Arrays.stream(couponIdsStr.split(","))
+ .map(String::trim).filter(StringUtils::isNotBlank)
+ .map(Integer::parseInt).collect(Collectors.toList());
+ List<Coupon> validCoupons = couponMapper.selectList(new QueryWrapper<Coupon>().lambda()
+ .in(Coupon::getId, couponIdList)
+ .eq(Coupon::getIsdeleted, Constants.ZERO)
+ .eq(Coupon::getStatus, Constants.ZERO));
+ if (CollectionUtils.isEmpty(validCoupons)) {
+ return;
+ }
+
+ // 3. 鏌ヨ鎵�鏈夋櫘閫氫細鍛�
+ List<Member> members = memberMapper.selectList(new QueryWrapper<Member>().lambda()
+ .eq(Member::getDeleted, Constants.ZERO)
+ .eq(Member::getStatus, Constants.ZERO)
+ .eq(Member::getUserType, Constants.ZERO)
+ .isNotNull(Member::getCreateTime));
+
+ Date now = new Date();
+ long msPerYear = 365L * 24 * 60 * 60 * 1000;
+ int giftedMemberCount = 0;
+
+ for (Member member : members) {
+ int alreadyGifted = member.getRegisterCouponGiftCount() != null ? member.getRegisterCouponGiftCount() : 0;
+ int registeredYears = (int) ((now.getTime() - member.getCreateTime().getTime()) / msPerYear);
+ int shouldGiftTotal = registeredYears / configYears;
+ int remainGift = Math.min(shouldGiftTotal, maxGiftCount) - alreadyGifted;
+ if (remainGift <= 0) {
+ continue;
+ }
+
+ // 4. 姣忔璧犻�佹墍鏈夋湁鏁堜紭鎯犲埜
+ for (int i = 0; i < remainGift; i++) {
+ for (Coupon coupon : validCoupons) {
+ MemberCoupon mc = new MemberCoupon();
+ mc.setCouponId(coupon.getId());
+ mc.setMemberId(member.getId());
+ mc.setStatus(Constants.CouponStatus.waitClaim.getKey());
+ Calendar validCal = Calendar.getInstance();
+ validCal.add(Calendar.DAY_OF_MONTH, coupon.getPushDays() != null ? coupon.getPushDays() : 7);
+ mc.setValidDate(validCal.getTime());
+ mc.setName(coupon.getName());
+ mc.setInfo(coupon.getInfo());
+ mc.setType(coupon.getType());
+ mc.setLimitPrice(coupon.getLimitPrice());
+ mc.setPrice(coupon.getPrice());
+ mc.setGetMethod(coupon.getGetMethod());
+ mc.setCouponType(coupon.getCouponType());
+ mc.setPushDays(coupon.getPushDays());
+ mc.setValidDays(coupon.getValidDays());
+ mc.setIsdeleted(Constants.ZERO);
+ mc.setCreateDate(now);
+ mc.setEditDate(now);
+ memberCouponMapper.insert(mc);
+ }
+ }
+
+ // 5. 鏇存柊浼氬憳宸茶禒閫佹鏁�
+ memberMapper.update(new UpdateWrapper<Member>().lambda()
+ .set(Member::getRegisterCouponGiftCount, alreadyGifted + remainGift)
+ .eq(Member::getId, member.getId()));
+ giftedMemberCount++;
+ }
+ log.info("娉ㄥ唽婊″勾璧犻�佷紭鎯犲埜瀹屾垚锛屽叡澶勭悊{}鍚嶄細鍛�", giftedMemberCount);
+ }
+
+ private void giftRegisterCoupons(Member member) {
+ String couponIdsStr = operationConfigBiz.getConfig().getRegisterGiftCouponIds();
+ if (StringUtils.isBlank(couponIdsStr)) {
+ return;
+ }
+ String[] idArr = couponIdsStr.split(",");
+ Date now = new Date();
+ for (String idStr : idArr) {
+ String trimmed = idStr.trim();
+ if (StringUtils.isBlank(trimmed)) continue;
+ Coupon coupon = couponMapper.selectById(Integer.valueOf(trimmed));
+ if (coupon == null || Constants.equalsInteger(coupon.getIsdeleted(), Constants.ONE)) continue;
+ MemberCoupon mc = new MemberCoupon();
+ mc.setCouponId(coupon.getId());
+ mc.setMemberId(member.getId());
+ mc.setStatus(Constants.CouponStatus.waitClaim.getKey());
+ Calendar validCal = Calendar.getInstance();
+ validCal.add(Calendar.DAY_OF_MONTH, coupon.getPushDays() != null ? coupon.getPushDays() : 7);
+ mc.setValidDate(validCal.getTime());
+ mc.setName(coupon.getName());
+ mc.setInfo(coupon.getInfo());
+ mc.setType(coupon.getType());
+ mc.setLimitPrice(coupon.getLimitPrice());
+ mc.setPrice(coupon.getPrice());
+ mc.setGetMethod(coupon.getGetMethod());
+ mc.setCouponType(coupon.getCouponType());
+ mc.setPushDays(coupon.getPushDays());
+ mc.setValidDays(coupon.getValidDays());
+ mc.setIsdeleted(Constants.ZERO);
+ mc.setCreateDate(now);
+ mc.setEditDate(now);
+ memberCouponMapper.insert(mc);
+ }
+ }
+
}
--
Gitblit v1.9.3