8.13优化

This commit is contained in:
seesaw
2024-08-13 17:48:15 +08:00
parent 0268c349cd
commit b7e004dd50
36 changed files with 745 additions and 114 deletions

View File

@ -92,7 +92,7 @@ public interface ErrorCodeConstants {
ErrorCode DIVIDE_NOT_EXISTS = new ErrorCode(1_007_902_001, "分账单不存在");
ErrorCode ORDER_NOT_COMPLETE = new ErrorCode(1_007_902_002, "还有订单尚未结算");
ErrorCode WX_ACCOUNT_NO = new ErrorCode(1_007_902_002, "微信充值金额已用完");
ErrorCode WX_ACCOUNT_NO = new ErrorCode(1_007_902_002, "微信充值金额不足");
ErrorCode DIVIDE_COMPANY_NOT_EXISTS = new ErrorCode(1_007_903_001, "分账公司不存在");

View File

@ -10,7 +10,7 @@ public class DrawMoneyVO {
@Schema(description = "用户编号")
private Long userId;
@Schema(description = "总金额,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "30938")
@Schema(description = "总金额,单位:分")
//@NotNull(message = "总金额,单位:分不能为空")
private Integer totalPrice;
/**

View File

@ -31,9 +31,12 @@ public interface DivideMapper extends BaseMapperX<DivideDO> {
.orderByDesc(DivideDO::getId));
}
@Select("select sum(total_money) from member_dish_order where DATE(create_time) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)")
@Select("select sum(wx_amount) from member_dish_order where DATE(create_time) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)")
BigDecimal getToday();
@Select("select money from member_refund_log where DATE(create_time) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)")
BigDecimal getRefund();
@Select("select wx_amount from member_card where user_id = #{userId} order by create_time desc limit 1")
BigDecimal getWxAmount(Long userId);

View File

@ -172,16 +172,24 @@ public class DivideServiceImpl implements DivideService {
public int startDivide() {
BigDecimal today = divideMapper.getToday();
if (today == null) {
return 0;
}
//转换单位 元-->分
int money = today.multiply(new BigDecimal("100")).intValue();
//去除当天退款
BigDecimal refundToday = divideMapper.getRefund();
if (refundToday == null) {
refundToday = BigDecimal.ZERO;
}
int refund = refundToday.multiply(new BigDecimal("100")).intValue();
money = money-refund;
//查询29天内的充值订单原因微信30天自动解冻订单将不能分账
LocalDateTime now = LocalDateTime.now();
LocalDateTime thirtyDaysAgo = now.minusDays(30);
LocalDateTime thirtyDaysAgo = now.minusDays(29);
List<DivideDO> divideDOS = divideMapper.selectList(Wrappers.<DivideDO>lambdaQuery()
.eq(DivideDO::getStatus, PayDivideStatusRespEnum.WAITING.getStatus())
.eq(DivideDO::getUnfreezeStatus,"0")
@ -374,10 +382,19 @@ public class DivideServiceImpl implements DivideService {
throw new ServiceException(WX_ACCOUNT_NO);
}
//判断是否有金额可退款
int money = wxAmount.multiply(new BigDecimal("100")).intValue();
if (money <= 0) {
if (money <= 0 ) {
throw new ServiceException(WX_ACCOUNT_NO);
}
//指定金额
if(drawMoneyVO.getTotalPrice()!=null){
if (money < drawMoneyVO.getTotalPrice() ) {
throw new ServiceException(WX_ACCOUNT_NO);
}
money = drawMoneyVO.getTotalPrice();
}
LocalDateTime now = LocalDateTime.now(); // 获取当前时间
LocalDateTime threeYearsAgo = now.minusDays(365);
@ -712,6 +729,7 @@ public class DivideServiceImpl implements DivideService {
DivideCardDO lastCardDO = divideCardMapper.selectOne(Wrappers.<DivideCardDO>lambdaQuery()
.eq(DivideCardDO::getUserId, userId)
.orderByDesc(DivideCardDO::getCreateTime)
.orderByDesc(DivideCardDO::getId)
.last("limit 1"));
BigDecimal changeMoney = new BigDecimal(amount).divide(new BigDecimal("100"));

View File

@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.pay.controller.admin.divideinfo.vo.DivideInfoSave
import cn.iocoder.yudao.module.pay.dal.dataobject.divideinfo.DivideInfoDO;
import cn.iocoder.yudao.module.pay.dal.mysql.divideinfo.DivideInfoMapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@ -72,12 +73,15 @@ public class DivideInfoServiceImpl implements DivideInfoService {
PageResult<DivideInfoDO> divideInfoDOPageResult = divideInfoMapper.selectPage(pageReqVO);
List<DivideInfoDO> list = divideInfoDOPageResult.getList();
for (DivideInfoDO divideInfoDO:list){
// 解析时间字符串
ZonedDateTime zonedDateTime = ZonedDateTime.parse(divideInfoDO.getDFinishTime());
// 定义所需的时间格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// 格式化时间字符串
divideInfoDO.setDFinishTime(zonedDateTime.format(formatter));
if(StringUtils.isNotBlank(divideInfoDO.getDFinishTime())){
// 解析时间字符串
ZonedDateTime zonedDateTime = ZonedDateTime.parse(divideInfoDO.getDFinishTime());
// 定义所需的时间格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// 格式化时间字符串
divideInfoDO.setDFinishTime(zonedDateTime.format(formatter));
}
}
return divideInfoDOPageResult;
}