doum
12 小时以前 e68e324f91d1a4eb2d4c5f07d27ca105a308bc0c
server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -19,17 +19,20 @@
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.core.wx.WxMiniConfig;
import com.doumee.dao.business.*;
import com.doumee.dao.business.MemberMapper;
import com.doumee.dao.business.ShopMapper;
import com.doumee.dao.business.SmsrecordMapper;
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.*;
import com.doumee.dao.system.SystemUserMapper;
import com.doumee.dao.system.dto.MemberRechargeDTO;
import com.doumee.dao.system.dto.PlatformConfigDTO;
import com.doumee.dao.web.dto.MemberOwnDTO;
import com.doumee.dao.web.dto.shop.Position;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.dao.web.request.DealIntegralRequest;
import com.doumee.dao.web.request.UpdMobileRequest;
import com.doumee.dao.web.request.UpdateMemberRequest;
import com.doumee.dao.web.request.WxPhoneRequest;
import com.doumee.dao.web.response.AccountResponse;
@@ -40,7 +43,10 @@
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.doumee.service.system.SystemDictDataService;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import io.swagger.models.auth.In;
import io.swagger.util.Yaml;
import lombok.extern.log4j.Log4j;
import me.chanjar.weixin.common.error.WxErrorException;
import okhttp3.OkHttpClient;
@@ -64,7 +70,7 @@
import java.util.stream.Collectors;
/**
 * 用户信息表Service实现
 * 客户信息表Service实现
 * @author 江蹄蹄
 * @date 2023/03/21 15:48
 */
@@ -74,10 +80,27 @@
    @Autowired
    private MemberMapper memberMapper;
    @Autowired
    private CouponMapper couponMapper;
    @Autowired
    private MemberCouponJoinMapper memberCouponJoinMapper;
    @Autowired
    private IntegralMapper integralMapper;
    @Autowired
    private ShopMapper shopMapper;
    @Autowired
    private UserActionMapper userActionMapper;
    @Autowired
    private SmsrecordMapper smsrecordMapper;
    @Autowired
    private MemberJoinMapper memberJoinMapper;
    @Autowired
    private InviteRecordMapper inviteRecordMapper;
    @Autowired
@@ -85,6 +108,9 @@
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private SystemDictDataService systemDictDataService;
    @Autowired
    private UploadFileService uploadFileService;
@@ -130,6 +156,50 @@
        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
    public void updateByIdInBatch(List<Member> members) {
@@ -173,13 +243,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());
@@ -227,7 +299,7 @@
    @Override
    public AccountResponse wxLogin(String code,Integer recId){
    public AccountResponse wxLogin(String code){
        try {
            //获取微信敏感数据
            WxMaJscode2SessionResult session = WxMiniConfig.wxMaService.getUserService().getSessionInfo(code);
@@ -235,48 +307,43 @@
            if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isBlank(openId)) {
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"获取openid失败!请联系管理员");
            }
            Member member = memberMapper.selectOne(new QueryWrapper<Member>().eq("OPEN_ID", openId));
            if (member == null) {
                member = new Member();
                member.setImgurl("20230410/4010b821-2137-4e6d-86e4-5ab9c06184a4.png");
                member.setNickname("微信用户"+ CodeVerifyUtils.createVerificationCode(4));
                member.setCreateDate(new Date());
                member.setIsdeleted(Constants.ZERO);
                member.setType(Constants.ZERO);
                member.setOrigin(Constants.ZERO);
                member.setRecId(recId);
                member.setOpenId(openId);
                memberMapper.insert(member);
            }
            member.setImgFullUrl(systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
                    systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode()+member.getImgurl());
            Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getOpenId, openId)
                            .eq(Member::getIsdeleted,Constants.ZERO)
                    .last(" limit 1"));
            //创建token
            JwtPayLoad payLoad = new JwtPayLoad(member.getId());
            JwtPayLoad payLoad = new JwtPayLoad(Constants.MEMBER_PREFIX+member.getId());
            String token = JwtTokenUtil.generateToken(payLoad);
            AccountResponse accountResponse = new AccountResponse();
            accountResponse.setToken(token);
            accountResponse.setSessionKey(session.getSessionKey());
            accountResponse.setMember(member);
            if(Objects.nonNull(member)){
                memberMapper.updateById(member);
                member.setImgFullUrl(systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
                        systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode()+member.getImgurl());
                accountResponse.setToken(token);
                accountResponse.setMember(member);
            }else{
                accountResponse.setOpenid(openId);
            }
            return accountResponse;
        } catch (WxErrorException e) {
            e.printStackTrace();
        }
        throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"微信登录异常!请联系管理员");
    }
    @Override
    public AccountResponse wxLoginTest( Integer memberId){
        //创建token
        JwtPayLoad payLoad = new JwtPayLoad(memberId);
        JwtPayLoad payLoad = new JwtPayLoad(Constants.MEMBER_PREFIX+memberId);
        String token = JwtTokenUtil.generateToken(payLoad);
        AccountResponse accountResponse = new AccountResponse();
        accountResponse.setToken(token);
        return accountResponse;
    }
    @Override
    public void wxPhone(WxPhoneRequest wxPhoneRequest){
    public AccountResponse wxPhone(WxPhoneRequest wxPhoneRequest){
        try {
            WxMaPhoneNumberInfo userPhoneInfo = WxMiniConfig.wxMaService.getUserService().getPhoneNoInfo(
                    wxPhoneRequest.getSessionKey(), wxPhoneRequest.getEncryptedData(), wxPhoneRequest.getIv());
@@ -285,49 +352,178 @@
            if(Objects.isNull(phone)){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未获取到手机号");
            }
            Member member =  memberMapper.selectById(wxPhoneRequest.getMemberId());
            Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getOpenId, wxPhoneRequest.getOpenid())
                    .eq(Member::getIsdeleted,Constants.ZERO)
                    .last(" limit 1"));
            if (member == null) {
                member = new Member();
                member.setImgurl("20230410/4010b821-2137-4e6d-86e4-5ab9c06184a4.png");
                member.setNickname("微信用户"+ CodeVerifyUtils.createVerificationCode(4));
                member.setCreateDate(new Date());
                member.setIsdeleted(Constants.ZERO);
                member.setType(Constants.ZERO);
                member.setOrigin(Constants.ZERO);
                if(!this.checkIsCreateInvite(phone)){
                    member.setRecId(Constants.getInviteCode(wxPhoneRequest.getRecId()));
                }
                member.setOpenId(wxPhoneRequest.getOpenid());
            }
            member.setPhone(phone);
            member.setEditDate(new Date());
            member.setEditor(wxPhoneRequest.getMemberId());
            member.setImgFullUrl(systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
                    systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode()+member.getImgurl());
            //生成分享码
            String accessToken = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.ACCESS_TOKEN).getCode();
            if(StringUtils.isBlank(member.getSharingCode())){
                //生成图片上传OSS
                Map<String,Object> body = new HashMap<>();
                // 场景码,与前端约定,最终是需要前端解析
                body.put("scene", member.getId());
                // 正式版为 "release",体验版为 "trial",开发版为 "develop"。默认是正式版。
                body.put("env_version", "release");
                // 透明,根据你的场景自行设置body参数
                body.put("is_hyaline", true);
                OkHttpClient client = new OkHttpClient().newBuilder().build();
                okhttp3.MediaType mediaType = okhttp3.MediaType.parse("application/json");
                okhttp3.RequestBody requestBody = okhttp3.RequestBody.create(mediaType, JSONObject.toJSONString(body));
                Request request = new Request.Builder().url("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token="+accessToken)
                        .method("POST", requestBody).build();
                try {
                    Response response = client.newCall(request).execute();
                    if (response.isSuccessful()) {
                        InputStream inputStream = new ByteArrayInputStream(response.body().bytes());
                        FileModel fileModel = uploadFileService.uploadWxCode(inputStream,member.getId().toString());
                        member.setSharingCode(fileModel.getFileUrl());
                        inputStream.close();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
            if(Objects.isNull(member.getId())){
                memberMapper.insert(member);
                PlatformConfigDTO platformConfigDTO = systemDictDataService.getPlatformConfigDTO();
                this.createRegionReward(member,platformConfigDTO);
                //创建邀请记录
                this.createInviteRecord(member,platformConfigDTO);
                member.setSharingCode(this.createShareCode(member.getId()));
                memberMapper.updateById(member);
            }else{
                if(StringUtils.isBlank(member.getSharingCode())){
                    member.setSharingCode(this.createShareCode(member.getId()));
                }
                memberMapper.updateById(member);
            }
            memberMapper.updateById(member);
            JwtPayLoad payLoad = new JwtPayLoad(Constants.MEMBER_PREFIX+member.getId());
            String token = JwtTokenUtil.generateToken(payLoad);
            AccountResponse accountResponse = new AccountResponse();
            accountResponse.setToken(token);
            accountResponse.setMember(member);
            return accountResponse;
        } catch (Exception e) {
            e.printStackTrace();
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"更新手机号失败");
        }
    }
    /**
     * 发放注册奖励信息
     * @param member
     * @param platformConfigDTO
     */
    public void createRegionReward(Member member,PlatformConfigDTO platformConfigDTO){
        //查询用户是否注销过
        if(memberMapper.selectCount(new QueryWrapper<Member>().lambda()
                .eq(Member::getIsdeleted,Constants.ONE)
                .eq(Member::getPhone,member.getPhone())
        )>Constants.ZERO){
            return;
        }
        //开启注册送积分
        if(Constants.equalsInteger(platformConfigDTO.getRegIntegralRewardStatus(),Constants.ZERO)){
            DealIntegralRequest dealIntegralRequest = new DealIntegralRequest();
            dealIntegralRequest.setIntegralNum(platformConfigDTO.getRegIntegralReward());
            dealIntegralRequest.setDealType(Constants.ZERO);
            dealIntegralRequest.setMemberId(member.getId());
            dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.REGISTER);
            integralService.dealIntegral(dealIntegralRequest);
        }
        //开启注册送优惠券
        if(Constants.equalsInteger(platformConfigDTO.getRegCouponRewardStatus(),Constants.ZERO)){
            List<JSONObject> regCouponRewardList = platformConfigDTO.getRegCouponRewardList();
            //[{"num":"2","couponId":6},{"num":"3","couponId":5}]
            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(regCouponRewardList)){
                List<MemberCoupon> memberCouponList = new ArrayList<>();
                for (JSONObject jsonObject:regCouponRewardList) {
                    Integer couponId = jsonObject.getInteger("couponId");
                    Integer num = jsonObject.getInteger("num");
                    Coupon coupon =  couponMapper.selectById(couponId);
                    if(Objects.isNull(coupon)||Constants.equalsInteger(coupon.getIsdeleted(),Constants.ONE)&&num>Constants.ZERO){
                        continue;
                    }
                    MemberCoupon memberCoupon = MemberCoupon.couponToBean(coupon,member,new Date(),Constants.ZERO,null);
                    for (int i = 0; i < num; i++) {
                        memberCouponList.add(memberCoupon);
                    }
                }
                if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(memberCouponList)){
                    memberCouponJoinMapper.insert(memberCouponList);
                }
            }
        }
    }
    /**
     * 创建邀请记录
     * @param member
     */
    public void createInviteRecord(Member member,PlatformConfigDTO platformConfigDTO){
        if(Objects.isNull(member.getRecId())){
            return;
        }
        InviteRecord inviteRecord = new InviteRecord();
        inviteRecord.setCreateDate(new Date());
        inviteRecord.setIsdeleted(Constants.ZERO);
        inviteRecord.setInviteId(member.getRecId());
        inviteRecord.setMemberId(member.getId());
        inviteRecord.setPhone(member.getPhone());
        inviteRecord.setRewardIntegral(Objects.nonNull(platformConfigDTO)&&Constants.equalsInteger(platformConfigDTO.getShareIntegralRewardStatus(),Constants.ZERO)?
                platformConfigDTO.getShareIntegralReward():BigDecimal.ZERO);
        inviteRecord.setFirstOrderStatus(Constants.ZERO);
        inviteRecordMapper.insert(inviteRecord);
    }
    /**
     * 查询是否创建过邀请
     * @param mobile
     * @return
     */
    public Boolean checkIsCreateInvite(String mobile){
        return inviteRecordMapper.selectCount(new QueryWrapper<InviteRecord>()
                .lambda()
                .eq(InviteRecord::getPhone,mobile)
        )>Constants.ZERO?true:false;
    }
    public String createShareCode(Integer memberId){
        //生成分享码
        String accessToken = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.ACCESS_TOKEN).getCode();
        //生成图片上传OSS
        Map<String,Object> body = new HashMap<>();
        // 场景码,与前端约定,最终是需要前端解析
        body.put("scene", memberId);
        // 正式版为 "release",体验版为 "trial",开发版为 "develop"。默认是正式版。
        body.put("env_version", "release");
        // 透明,根据你的场景自行设置body参数
        body.put("is_hyaline", true);
        OkHttpClient client = new OkHttpClient().newBuilder().build();
        okhttp3.MediaType mediaType = okhttp3.MediaType.parse("application/json");
        okhttp3.RequestBody requestBody = okhttp3.RequestBody.create(mediaType, JSONObject.toJSONString(body));
        Request request = new Request.Builder().url("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token="+accessToken)
                .method("POST", requestBody).build();
        try {
            Response response = client.newCall(request).execute();
            if (response.isSuccessful()) {
                InputStream inputStream = new ByteArrayInputStream(response.body().bytes());
                FileModel fileModel = uploadFileService.uploadWxCode(inputStream,memberId.toString());
                inputStream.close();
                return fileModel.getFileUrl();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    @Override
    public Member updateMember(UpdateMemberRequest updateMemberRequest){
        if(StringUtils.isBlank(updateMemberRequest.getImgurl())
                && StringUtils.isBlank(updateMemberRequest.getNickname())
                && StringUtils.isBlank(updateMemberRequest.getName())
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        Member member  = new Member();
        BeanUtils.copyProperties(updateMemberRequest,member);
        member.setId(updateMemberRequest.getMemberId());
@@ -339,6 +535,9 @@
                systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode()+dbMember.getImgurl());
        return dbMember;
    }
    @Override
    public MemberOwnDTO getMemberOwnDTO(Integer memberId) {
@@ -358,7 +557,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());
@@ -405,6 +604,68 @@
        memberMapper.updateById(member);
    }
    @Override
    public void verifyUserPhone(UpdMobileRequest request){
        if(Objects.isNull(request)
                || Objects.isNull(request.getMemberId())
                || StringUtils.isBlank(request.getPhone())
                || StringUtils.isBlank(request.getCode())
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        Member member = memberMapper.selectById(request.getMemberId());
        if(StringUtils.isNotBlank(member.getPhone())&&!member.getPhone().equals(request.getPhone())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"手机号错误");
        }
        this.verifyPhoneCode(request.getCode(),request.getMemberId());
    }
    public void verifyPhoneCode(String code,Integer memberId){
        //验证码
        Smsrecord smsrecord = smsrecordMapper.selectOne(new QueryWrapper<Smsrecord>().lambda()
                .eq(Smsrecord::getIsdeleted,Constants.ZERO)
                .eq(Smsrecord::getCode,code)
                .eq(Smsrecord::getMemberId,memberId)
                .last(" limit 1")
        );
        if(Objects.isNull(smsrecord)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"验证码错误!");
        }
        if(!Constants.equalsInteger(smsrecord.getStatus(),Constants.ZERO)){
            if(Constants.equalsInteger(smsrecord.getStatus(),Constants.ONE)){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"验证码已使用");
            }else{
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"验证码已过期");
            }
        }
        smsrecordMapper.update(new UpdateWrapper<Smsrecord>().lambda()
                .set(Smsrecord::getStatus,Constants.ONE)
                .eq(Smsrecord::getId,smsrecord.getId())
        );
    }
    @Override
    public void updateUserPhone(UpdMobileRequest request){
        if(Objects.isNull(request)
        || Objects.isNull(request.getMemberId())
        || StringUtils.isBlank(request.getPhone())
        || StringUtils.isBlank(request.getCode())
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        Member member = memberMapper.selectById(request.getMemberId());
        if(StringUtils.isNotBlank(member.getPhone())&&member.getPhone().equals(request.getPhone())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"无法更换相同手机号");
        }
        this.verifyPhoneCode(request.getCode(),request.getMemberId());
        memberMapper.update(new UpdateWrapper<Member>().lambda()
                .eq(Member::getPhone,request.getPhone())
                .eq(Member::getId,request.getMemberId())
        );
    }
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    @Override
    public Integer importMemberRechargeBatch(MultipartFile file) {
@@ -428,7 +689,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->{
@@ -473,7 +734,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)
@@ -494,4 +755,13 @@
        Integer integer = integralService.dealIntegral(dealIntegralRequest);
        return integer;
    }
}