doum
19 小时以前 22aaacd9e51da58ed10221639b6bd2fd9a13c6e5
server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -19,13 +19,9 @@
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.core.wx.WxMiniConfig;
import com.doumee.dao.business.MemberMapper;
import com.doumee.dao.business.SmsrecordMapper;
import com.doumee.dao.business.*;
import com.doumee.dao.business.join.MemberJoinMapper;
import com.doumee.dao.business.model.Areas;
import com.doumee.dao.business.model.Goodsorder;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.Smsrecord;
import com.doumee.dao.business.model.*;
import com.doumee.dao.system.SystemUserMapper;
import com.doumee.dao.system.dto.MemberRechargeDTO;
import com.doumee.dao.web.dto.MemberOwnDTO;
@@ -67,7 +63,7 @@
import java.util.stream.Collectors;
/**
 * 用户信息表Service实现
 * 客户信息表Service实现
 * @author 江蹄蹄
 * @date 2023/03/21 15:48
 */
@@ -77,6 +73,12 @@
    @Autowired
    private MemberMapper memberMapper;
    @Autowired
    private IntegralMapper integralMapper;
    @Autowired
    private ShopMapper shopMapper;
    @Autowired
    private UserActionMapper userActionMapper;
    @Autowired
    private SmsrecordMapper smsrecordMapper;
@@ -136,6 +138,109 @@
        member.setEditor(user.getId());
        memberMapper.updateById(member);
    }
    @Override
    @Transactional
    public void updateShop(Member member) {
        if(member.getBindShopId()==null || member.getId()==null){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        MPJLambdaWrapper<Member> queryWrapper =new MPJLambdaWrapper<>();
        queryWrapper.selectAll(Member.class);
        queryWrapper.selectAs(Shop::getName,Member::getShopName);
        queryWrapper.leftJoin(Shop.class, Shop::getId,Member::getBindShopId);
        queryWrapper.eq(Member::getId,member.getId());
        Member model = memberMapper.selectJoinOne(Member.class,queryWrapper);
        if(model == null ||Constants.equalsObject(model.getIsdeleted(),Constants.ONE)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"客户信息查询无效!");
        }
        if(model.getBindShopId() == null){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"客户尚未绑定经销商信息,无法更换!");
        }
        if(Constants.equalsInteger(model.getBindShopId() ,member.getBindShopId())){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"请选择新的经销商!");
        }
        Shop shop = shopMapper.selectById(member.getBindShopId());
        if(shop == null ||Constants.equalsObject(shop.getIsdeleted(),Constants.ONE)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"经销商信息查询无效!");
        }
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        Date date = new Date();
        memberMapper.update(null,new UpdateWrapper<Member>().lambda()
                .eq(Member::getId,member.getId())
                .set(Member::getEditDate,date)
                .set(Member::getEditor,user.getId())
                .set(Member::getBindShopId,member.getBindShopId())
        );
        //更换日志记录
        UserActionServiceImpl.saveUserActionBiz(user,member.getId(),
                Constants.UserActionType.CHANGE_SHOP,
                userActionMapper,
                date,
                new String[]{user.getUsername(),DateUtil.getPlusTime2(date)},
                JSONObject.toJSONString(member) ,
                model.getShopName(), shop.getName());
    }
    @Override
    @Transactional
    public void updateIntegral(Integral param) {
        if(param.getMemberId()==null || param.getType()==null
                || param.getType()<0
                || param.getType()>2
                || Constants.formatBigdecimal(param.getNum()).compareTo(new BigDecimal(0))<=0){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        MPJLambdaWrapper<Member> queryWrapper =new MPJLambdaWrapper<>();
        queryWrapper.selectAll(Member.class);
        queryWrapper.selectAs(Shop::getName,Member::getShopName);
        queryWrapper.leftJoin(Shop.class, Shop::getId,Member::getBindShopId);
        queryWrapper.eq(Member::getId,param.getMemberId());
        Member model = memberMapper.selectJoinOne(Member.class,queryWrapper);
        if(model == null ||Constants.equalsObject(model.getIsdeleted(),Constants.ONE)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"客户信息查询无效!");
        }
        BigDecimal num = param.getNum();
        if(param.getType() == 1 &&Constants.formatBigdecimal(model.getIntegral()).compareTo(param.getNum())<0){
            //如果是减少,判断用户余额是否满足
            num = num.multiply(new BigDecimal(-1));//减少
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"用户账户余额不足!");
        }
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        Date date = new Date();
        //账户余额
        memberMapper.update(null,new UpdateWrapper<Member>().lambda()
                .eq(Member::getId,model.getId())
                .set(Member::getEditDate,date)
                .set(Member::getEditor,user.getId())
                .setSql(param.getType() == 0,"total_integral = ifnull(total_integral,0)+" + num)//累计增加
                .setSql(param.getType() == 0,"integral = ifnull(integral,0)+" + param.getNum())
                .setSql(param.getType() == 1,"integral = ifnull(integral,0)-" + param.getNum()));
        Constants.IntegralObjType integralObjType = param.getType()==0?Constants.IntegralObjType.SYSTEM_RECHARGE:Constants.IntegralObjType.SYSTEM_DEDUCT;
        Integral integral = new Integral();
        integral.setMemberId(model.getId());
        integral.setCreateDate(new Date());
        integral.setCreator(user.getId());
        integral.setIsdeleted(Constants.ZERO);
        integral.setTitle(integralObjType.getName());
        integral.setContent(integralObjType.getNoteinfo());
        integral.setObjId(model.getId());
        integral.setObjType(integralObjType.getKey());
        integral.setType(param.getType());
        integral.setRemark(param.getRemark());
        integral.setNum(param.getNum());
        integral.setTotalNum(param.getType() == 0? Constants.formatBigdecimal(model.getIntegral()).add(integral.getNum()):Constants.formatBigdecimal(model.getIntegral()).subtract(integral.getNum()));
        integral.setOrderCode(null);
        integral.setUserType(Constants.ZERO);
        integralMapper.insert(integral);
    }
    @Override
    public void updateByIdInBatch(List<Member> members) {
@@ -179,13 +284,15 @@
        MPJLambdaWrapper<Member> queryWrapper = new MPJLambdaWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        queryWrapper.selectAll(Member.class);
        queryWrapper.selectAs(Shop::getName,Member::getShopName);
        queryWrapper.leftJoin(Shop.class, Shop::getId,Member::getBindShopId);
        queryWrapper.and(StringUtils.isNotBlank(pageWrap.getModel().getNickname()),ms->ms.like(Member::getNickname,pageWrap.getModel().getNickname())
                 .or().like(Member::getName,pageWrap.getModel().getNickname())
                .or().like(Member::getPhone,pageWrap.getModel().getNickname())
        );
        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getShopName()),Shop::getStatus,pageWrap.getModel().getShopName());
        queryWrapper.eq(pageWrap.getModel().getStatus()!=null,Member::getStatus,pageWrap.getModel().getStatus());
        queryWrapper.eq(Member::getIsdeleted,Constants.ZERO);
        queryWrapper.ge(pageWrap.getModel().getStarttime()!=null, Member::getCreateDate,pageWrap.getModel().getStarttime());
        queryWrapper.le(pageWrap.getModel().getEndtime()!=null,Member::getCreateDate, pageWrap.getModel().getEndtime());
@@ -245,7 +352,7 @@
            if (member == null) {
                member = new Member();
                member.setImgurl("20230410/4010b821-2137-4e6d-86e4-5ab9c06184a4.png");
                member.setNickname("微信用户"+ CodeVerifyUtils.createVerificationCode(4));
                member.setNickname("微信客户"+ CodeVerifyUtils.createVerificationCode(4));
                member.setCreateDate(new Date());
                member.setIsdeleted(Constants.ZERO);
                member.setType(Constants.ZERO);
@@ -373,7 +480,7 @@
        Integer mId = Optional.ofNullable(userInfo)
                .map(s -> s.getMemberId())
                .orElseThrow(() -> new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "用户ID缺失"));
                .orElseThrow(() -> new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "客户ID缺失"));
        Member member = new Member();
        member.setId(mId);
        member.setEditor(userInfo.getId());
@@ -505,7 +612,7 @@
            if(phoneNums.size() != members.size()){
                List<String> collect = members.stream().map(s -> s.getPhone()).collect(Collectors.toList());
                List<String> unFindMember = phoneNums.stream().filter(s -> !collect.contains(s)).collect(Collectors.toList());
                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),unFindMember.toString()+"不存在该手机号码用户");
                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),unFindMember.toString()+"不存在该手机号码客户");
            }
            Map<String, MemberRechargeDTO> collect = dataList.stream().collect(Collectors.toMap(s -> s.getPhone(), s -> s));
            members.forEach(s->{
@@ -550,7 +657,7 @@
        Member member = memberMapper.selectById(memberRechargeDTO.getMemberId());
        //如果扣除金额大于用户拥金额 取用户剩余金额
        //如果扣除金额大于客户拥金额 取客户剩余金额
        BigDecimal integralNum = new BigDecimal(memberRechargeDTO.getNum());
        if (Constants.equalsInteger(memberRechargeDTO.getIntegralType(),Constants.ONE)
        && (member.getIntegral().compareTo(integralNum) == -1)