陶杰
2024-09-24 cbbc18e79cb498901290451ecf5b9fdbd2a212aa
1.合伙人-手机号修改
已修改8个文件
已添加1个文件
204 ■■■■■ 文件已修改
src/main/java/com/mzl/flower/dto/request/partner/QueryPartnerDTO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/dto/request/partner/UpdatePhoneDTO.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/dto/response/partner/PartnerDTO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/dto/response/payment/OrderItemListDTO.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/service/partner/PartnerService.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/service/payment/OrderService.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/web/customer/OrderCustomerController.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/web/partner/PartnerController.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/partner/PartnerMapper.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/dto/request/partner/QueryPartnerDTO.java
@@ -37,4 +37,7 @@
    @ApiModelProperty("启用/禁用(USER_ENABLED_OR_DISABLED)")
    private Integer isEnabled;
    @ApiModelProperty("注册手机号")
    private String loginName;
}
src/main/java/com/mzl/flower/dto/request/partner/UpdatePhoneDTO.java
对比新文件
@@ -0,0 +1,24 @@
package com.mzl.flower.dto.request.partner;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class UpdatePhoneDTO {
    @ApiModelProperty(value = "用户名/手机号码", required = true)
    private String username;
    @ApiModelProperty(value = "短信验证码")
    private String smsCode;
    @ApiModelProperty(value = "图形验证码")
    private String code;
    @ApiModelProperty(value = "图形验证码id")
    private String codeId;
    @ApiModelProperty(value = "用户id")
    private String id;
}
src/main/java/com/mzl/flower/dto/response/partner/PartnerDTO.java
@@ -71,4 +71,7 @@
    @ApiModelProperty("头像")
    private String cover;
    @ApiModelProperty("注册手机号")
    private String loginName;
}
src/main/java/com/mzl/flower/dto/response/payment/OrderItemListDTO.java
@@ -74,4 +74,11 @@
    @ApiModelProperty(value = "真实成交总价格")
    private BigDecimal realTotal;
    @ApiModelProperty(value = "商品ID")
    private Long flowerId;//商品id
    @ApiModelProperty(value = "供应商ID")
    private Long supplierId;//商品id
}
src/main/java/com/mzl/flower/service/partner/PartnerService.java
@@ -20,6 +20,7 @@
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -51,6 +52,10 @@
    @Resource
    private BaseService baseService;
    @Autowired
    private UserService userService;
    public PartnerService(PartnerMapper partnerMapper, UserMapper userMapper, WxMaService maService, UploadService uploadService) {
        this.partnerMapper = partnerMapper;
@@ -257,4 +262,24 @@
        partnerMapper.updateById(partner);
    }
    @Transactional
    public void phoneUpdate(UpdatePhoneDTO dto) {
        Partner partner = partnerMapper.selectById(dto.getId());
        if(partner==null){
            throw new ValidationException("合伙人信息未登记");
        }
        User user = userService.getUserById(partner.getUserId());
        if(user == null){
            throw new ValidationException("用户不存在");
        }
        partner.setContactTel(dto.getUsername());
        partner.update(SecurityUtils.getUserId());
        partnerMapper.updateById(partner);
        user.setTel(dto.getUsername());
        user.setLoginName(dto.getUsername());
        user.update(SecurityUtils.getUserId());
        userMapper.updateById(user);
    }
}
src/main/java/com/mzl/flower/service/payment/OrderService.java
@@ -68,10 +68,8 @@
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
@Service
@Transactional
@@ -1614,4 +1612,77 @@
    }
    @Transactional
    public String copyOrder(String id) {
        List<OrderItem> ls = orderItemMapper.selectList(
                new QueryWrapper<OrderItem>().eq("order_id", id));
        StringBuilder sb=new StringBuilder();
        ls.stream().forEach(orderItem -> {
            Cart cart = null;
            final Long flowerId = orderItem.getFlowerId();
            final Integer num = orderItem.getNum();
            final String userId=orderItem.getCreateBy();
            // 查看当前的花是否已经下架
            Flower flower = flowerMapper.selectById(flowerId);
            // 查看当前的花的限购
            final Integer limited = flower.getLimited();
            // 查看当前购物车里面是否已经存在当前花
            cart = cartMapper.selectOne(new QueryWrapper<Cart>()
                    .eq("create_by", orderItem.getCreateBy()).eq("flower_id",flowerId));
            if(null==cart){
                cart = new Cart();
                cart.setFlowerId(flowerId);
                cart.setNum(0);
                cart.create(orderItem.getCreateBy());
            }
            if (!flower.getStatus().equals(Constants.FLOWER_STATUS.UP.name())) {
                sb.append(flower.getName() + "已下架");
            }else if(flower.getStatus().equals(Constants.FLOWER_STATUS.UP.name())){
                // 未下架库存逻辑控制
                Integer tmpNum=cart.getNum()+num;
                //查看当前的库存
                if (null!=flower.getStock() && flower.getStock() > 0 && flower.getStock().compareTo(tmpNum) >= 0) {
                    // 库存充足
                    cart.setNum(tmpNum);
                } else if (null!=flower.getStock() && flower.getStock() > 0 && flower.getStock().compareTo(tmpNum) < 0) {
                    // 库存不足,剩多少给多少
                    cart.setNum(flower.getStock());
                    sb.append(flower.getName() + "购物车的总数超过库存,已调整成库存数!");
                }else {
                    sb.append(flower.getName() + "已无库存");
                }
                // 限购控制,如果当前的购物车的数量大于限购的话,则需要控制
                if(null!=limited && limited>0){
                    Integer buyedNum= getFlowerCompleteNumToday(userId,flowerId);
                    Integer todayNum=cart.getNum()+buyedNum;
                    //
                    if(todayNum>limited){
                        cart.setNum(limited-buyedNum<=0?0:limited-buyedNum);
                        sb.append(flower.getName() + "购物车的总数超过限购,已调整成未限购数!");
                    }
                }
            }
            if(null!=cart){
                // 插入购物车
                if(null!=cart.getId()){
                    // 新增
                    cartMapper.updateById(cart);
                }else{
                   // 更新
                    cartMapper.insert(cart);
                }
            }
        });
        return sb.toString();
    }
}
src/main/java/com/mzl/flower/web/customer/OrderCustomerController.java
@@ -148,4 +148,19 @@
        orderService.deleteOrder(id);
        return returnData(R.SUCCESS.getCode(), null);
    }
    @GetMapping(value = "/copyOrder")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "订单id", required = true, dataType = "String", paramType = "query"),
    })
    @ApiOperation(value = "再来一单")
    public ResponseEntity<ReturnDataDTO> copyOrder(String id) {
        String message=orderService.copyOrder(id);
        return returnData(R.SUCCESS.getCode(),null, message);
    }
}
src/main/java/com/mzl/flower/web/partner/PartnerController.java
@@ -4,12 +4,19 @@
import com.mzl.flower.base.BaseController;
import com.mzl.flower.base.R;
import com.mzl.flower.base.ReturnDataDTO;
import com.mzl.flower.base.cache.StringCacheClient;
import com.mzl.flower.config.exception.ValidationException;
import com.mzl.flower.constant.Constants;
import com.mzl.flower.dto.request.partner.*;
import com.mzl.flower.dto.response.partner.PartnerDTO;
import com.mzl.flower.entity.system.User;
import com.mzl.flower.service.partner.PartnerService;
import com.mzl.flower.service.system.UserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -24,6 +31,13 @@
public class PartnerController extends BaseController {
    private final PartnerService partnerService;
    @Autowired
    private StringCacheClient stringCacheClient;
    public static final String SMS_CODE_KEY = "SMS-CODE-KEY";
    public static final String TOKEN_KEY = "TOKEN-KEY";
    public static final String SEPARATOR = ":";
    public PartnerController(PartnerService partnerService) {
        this.partnerService = partnerService;
@@ -92,4 +106,27 @@
        return returnData(R.SUCCESS.getCode(),null);
    }
    @PostMapping("/phone/update")
    @ApiOperation(value = "合伙人注册手机号修改", notes = "合伙人注册手机号修改")
    public ResponseEntity<ReturnDataDTO> phoneUpdate(@Validated @RequestBody UpdatePhoneDTO dto) {
        // TODO
        String tel = dto.getUsername();
        String smsCode = dto.getSmsCode();
        if (StringUtils.isBlank(tel)) {
            throw new ValidationException("手机号码不能为空");
        }
        if (StringUtils.isBlank(smsCode)) {
            throw new ValidationException("手机验证码不能为空");
        }
        //从缓存中获取验证码
        String smsCacheCode = stringCacheClient.get(SMS_CODE_KEY + SEPARATOR + Constants.USER_TYPE.admin.name() + SEPARATOR + tel);
        if (!StringUtils.equals(smsCode, smsCacheCode)) {
            throw new ValidationException("手机验证码不正确");
        }
        partnerService.phoneUpdate(dto);
        return returnData(R.SUCCESS.getCode(),null);
    }
}
src/main/resources/mapper/partner/PartnerMapper.xml
@@ -3,13 +3,22 @@
<mapper namespace="com.mzl.flower.mapper.partner.PartnerMapper">
    <select id="queryPartner" resultType="com.mzl.flower.dto.response.partner.PartnerDTO">
        select * from t_partner_info t where t.deleted= 0
        select t.* ,u.login_name
        from t_partner_info t
        left join t_user u
        on t.user_id=u.id
        and u.type='partner'
        where t.deleted= 0
        <if test="dto.name!=null and dto.name!=''">
            AND t.name LIKE CONCAT('%',#{dto.name}, '%')
        </if>
        <if test="dto.tel!=null and dto.tel!=''">
            AND t.contact_tel LIKE CONCAT('%',#{dto.tel}, '%')
        </if>
        <if test="dto.loginName!=null and dto.loginName!=''">
            AND u.login_name LIKE CONCAT('%',#{dto.loginName}, '%')
        </if>
        <if test="dto.status!=null and dto.status!=''">
            AND t.status = #{dto.status}
        </if>