维护优惠券功能模块

This commit is contained in:
2024-07-13 09:40:28 +08:00
parent 1c92cce42c
commit c473765775
11 changed files with 96 additions and 72 deletions
@@ -64,6 +64,7 @@ public class MybatisPlusConfig {
"sys_dictionary", "sys_dictionary",
"sys_dictionary_data", "sys_dictionary_data",
"apps_test_data", "apps_test_data",
"shop_users",
"shop_order", "shop_order",
"shop_order_info", "shop_order_info",
"booking_user_invoice" "booking_user_invoice"
@@ -100,7 +100,7 @@ public class UsersController extends BaseController {
@ApiOperation("修改") @ApiOperation("修改")
@PutMapping() @PutMapping()
public ApiResult<?> update(@RequestBody Users users) { public ApiResult<?> update(@RequestBody Users users) {
if (usersService.updateById(users)) { if (usersService.updateById(users)) {
return success("修改成功"); return success("修改成功");
} }
return fail("修改失败"); return fail("修改失败");
@@ -4,18 +4,12 @@ import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.gxwebsoft.booking.entity.UserCard; import com.gxwebsoft.booking.entity.UserCard;
import com.gxwebsoft.booking.service.UserCardService; import com.gxwebsoft.booking.service.UserCardService;
import com.gxwebsoft.cms.entity.Website;
import com.gxwebsoft.cms.entity.WebsiteField;
import com.gxwebsoft.common.core.config.ConfigProperties; import com.gxwebsoft.common.core.config.ConfigProperties;
import com.gxwebsoft.common.core.security.JwtUtil;
import com.gxwebsoft.common.core.utils.RedisUtil; import com.gxwebsoft.common.core.utils.RedisUtil;
import com.gxwebsoft.common.core.web.BaseController; import com.gxwebsoft.common.core.web.BaseController;
import com.gxwebsoft.common.system.service.UserService;
import com.gxwebsoft.shop.entity.Order; import com.gxwebsoft.shop.entity.Order;
import com.gxwebsoft.shop.entity.OrderInfo; import com.gxwebsoft.shop.entity.OrderInfo;
import com.gxwebsoft.shop.entity.Payment; import com.gxwebsoft.shop.entity.Payment;
@@ -33,8 +27,6 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
@@ -145,6 +137,7 @@ public class WxPayNotifyController extends BaseController {
} }
// 8.发放积分 // 8.发放积分
usersService.addIntegral(order); usersService.addIntegral(order);
return "SUCCESS"; return "SUCCESS";
} }
} }
@@ -62,9 +62,11 @@ public class Users implements Serializable {
@ApiModelProperty(value = "注册时间") @ApiModelProperty(value = "注册时间")
private Integer createTime; private Integer createTime;
private String idcard; @ApiModelProperty(value = "身份证号码")
private String idCard;
private String truename; @ApiModelProperty(value = "真实姓名")
private String realName;
@ApiModelProperty(value = "是否管理员:1是;2否") @ApiModelProperty(value = "是否管理员:1是;2否")
private Integer isAdmin; private Integer isAdmin;
@@ -49,11 +49,11 @@
<if test="param.createTimeEnd != null"> <if test="param.createTimeEnd != null">
AND a.create_time &lt;= #{param.createTimeEnd} AND a.create_time &lt;= #{param.createTimeEnd}
</if> </if>
<if test="param.idcard != null"> <if test="param.idCard != null">
AND a.idcard LIKE CONCAT('%', #{param.idcard}, '%') AND a.id_card LIKE CONCAT('%', #{param.idCard}, '%')
</if> </if>
<if test="param.truename != null"> <if test="param.realName != null">
AND a.truename LIKE CONCAT('%', #{param.truename}, '%') AND a.real_name LIKE CONCAT('%', #{param.realName}, '%')
</if> </if>
<if test="param.isAdmin != null"> <if test="param.isAdmin != null">
AND a.is_admin = #{param.isAdmin} AND a.is_admin = #{param.isAdmin}
@@ -62,9 +62,11 @@ public class UsersParam extends BaseParam {
@QueryField(type = QueryType.EQ) @QueryField(type = QueryType.EQ)
private BigDecimal money; private BigDecimal money;
private String idcard; @ApiModelProperty(value = "身份证号码")
private String idCard;
private String truename; @ApiModelProperty(value = "真实姓名")
private String realName;
@ApiModelProperty(value = "是否管理员:1是;2否") @ApiModelProperty(value = "是否管理员:1是;2否")
@QueryField(type = QueryType.EQ) @QueryField(type = QueryType.EQ)
@@ -41,4 +41,6 @@ public interface UsersService extends IService<Users> {
Users getByIdRel(Integer id); Users getByIdRel(Integer id);
void addIntegral(Order order); void addIntegral(Order order);
Users getByPhone(String phone);
} }
@@ -260,68 +260,87 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
@Override @Override
@Transactional(rollbackFor = {Exception.class}) @Transactional(rollbackFor = {Exception.class})
public Boolean payByBalance(Order order) { public Boolean payByBalance(Order order) {
final User loginUser = order.getLoginUser(); final Users users = usersService.getByPhone(order.getPhone());
if (loginUser.getBalance().compareTo(order.getTotalPrice()) < 0) { if (users.getMoney().compareTo(order.getTotalPrice()) < 0) {
throw new BusinessException("余额不足"); throw new BusinessException("余额不足");
} }
// 发起网络请求(更新余额接口) // 发放积分
final RequestUtil requestUtil = new RequestUtil(); usersService.addIntegral(order);
requestUtil.setAccessToken(order.getAccessToken()); // 修改订单状态
requestUtil.setTenantId(order.getTenantId().toString()); order.setPayStatus(1);
String api = "/system/user/updateUserBalance"; // 更新余额接口 order.setPayTime(DateUtil.date());
final BigDecimal subtract = loginUser.getBalance().subtract(order.getTotalPrice()); order.setExpirationTime(DateUtil.offset(DateUtil.date(), DateField.YEAR, 10));
orderService.updateById(order);
orderInfoService.update(new LambdaUpdateWrapper<OrderInfo>().eq(OrderInfo::getOrderId, order.getOrderId()).set(OrderInfo::getPayStatus, 1));
// 更新会员卡状态
if (order.getType().equals(2)) {
final UserCard userCard = userCardService.getById(order.getCardId());
userCard.setPayStatus(1);
userCardService.updateById(userCard);
}
loginUser.setBalance(subtract); return true;
// 发起网络请求(更新余额接口)
// final RequestUtil requestUtil = new RequestUtil();
// requestUtil.setAccessToken(order.getAccessToken());
// requestUtil.setTenantId(order.getTenantId().toString());
// String api = "/system/user/updateUserBalance"; // 更新余额接口
// final BigDecimal subtract = loginUser.getMoney().subtract(order.getTotalPrice());
//
// loginUser.setBalance(subtract);
// 累加会员积分 // 累加会员积分
String key = "SiteInfo:" + order.getTenantId(); // String key = "SiteInfo:" + order.getTenantId();
final String siteInfo = redisUtil.get(key); // final String siteInfo = redisUtil.get(key);
// 从缓存读取信息 // 从缓存读取信息
if(StrUtil.isNotBlank(siteInfo)){ // if(StrUtil.isNotBlank(siteInfo)){
final Website website = JSONObject.parseObject(siteInfo, Website.class); // final Website website = JSONObject.parseObject(siteInfo, Website.class);
final List<WebsiteField> fields = website.getFields(); // final List<WebsiteField> fields = website.getFields();
fields.forEach(d -> { // fields.forEach(d -> {
if(d.getName().equals("integral_enabled") && d.getValue().equals("1")){ // if(d.getName().equals("integral_enabled") && d.getValue().equals("1")){
loginUser.setPoints(loginUser.getPoints() + order.getPayPrice().intValue()); // loginUser.setPoints(loginUser.getPoints() + order.getPayPrice().intValue());
} // }
}); // });
} // }
final ApiResult<?> apiResult = requestUtil.updateUserBalance(api, loginUser); // final ApiResult<?> apiResult = requestUtil.updateUserBalance(api, loginUser);
if (apiResult.getCode().equals(0)) { // if (apiResult.getCode().equals(0)) {
// 记录余额明细 // // 记录余额明细
final UserBalanceLog balanceLog = new UserBalanceLog(); // final UserBalanceLog balanceLog = new UserBalanceLog();
balanceLog.setUserId(order.getUserId()); // balanceLog.setUserId(order.getUserId());
balanceLog.setScene(20); // balanceLog.setScene(20);
balanceLog.setOrderNo(order.getOrderNo()); // balanceLog.setOrderNo(order.getOrderNo());
balanceLog.setMoney(order.getPayPrice()); // balanceLog.setMoney(order.getPayPrice());
balanceLog.setBalance(subtract); // balanceLog.setBalance(subtract);
balanceLog.setRemark(order.getComments()); // balanceLog.setRemark(order.getComments());
balanceLog.setMerchantId(order.getMerchantId()); // balanceLog.setMerchantId(order.getMerchantId());
userBalanceLogService.save(balanceLog); // userBalanceLogService.save(balanceLog);
// 修改订单状态 // // 修改订单状态
order.setPayStatus(1); // order.setPayStatus(1);
order.setPayTime(DateUtil.date()); // order.setPayTime(DateUtil.date());
order.setExpirationTime(DateUtil.offset(DateUtil.date(), DateField.YEAR, 10)); // order.setExpirationTime(DateUtil.offset(DateUtil.date(), DateField.YEAR, 10));
orderService.updateById(order); // orderService.updateById(order);
orderInfoService.update(new LambdaUpdateWrapper<OrderInfo>().eq(OrderInfo::getOrderId,order.getOrderId()).set(OrderInfo::getPayStatus,1)); // orderInfoService.update(new LambdaUpdateWrapper<OrderInfo>().eq(OrderInfo::getOrderId,order.getOrderId()).set(OrderInfo::getPayStatus,1));
// 更新会员卡状态 // // 更新会员卡状态
if(order.getType().equals(2)){ // if(order.getType().equals(2)){
final UserCard userCard = userCardService.getById(order.getCardId()); // final UserCard userCard = userCardService.getById(order.getCardId());
userCard.setPayStatus(1); // userCard.setPayStatus(1);
userCardService.updateById(userCard); // userCardService.updateById(userCard);
} // }
// 发放积分 // // 发放积分
usersService.addIntegral(order); // usersService.addIntegral(order);
return true; // return true;
} // }
return false; // return true;
} }
@Override @Override
@Transactional(rollbackFor = {Exception.class}) @Transactional(rollbackFor = {Exception.class})
public Boolean payByUserCard(Order order) { public Boolean payByUserCard(Order order) {
final Users users = usersService.getByPhone(order.getPhone());
final User loginUser = order.getLoginUser(); final User loginUser = order.getLoginUser();
final UserCardLog userCardLog = new UserCardLog(); final UserCardLog userCardLog = new UserCardLog();
if(order.getCardId() == null){ if (order.getCardId() == null) {
throw new BusinessException("会员卡ID不存在"); throw new BusinessException("会员卡ID不存在");
} }
// 查询会员卡信息 // 查询会员卡信息
@@ -342,7 +361,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
if (userCard.getNum() <= 0) { if (userCard.getNum() <= 0) {
throw new BusinessException("剩余次数不足"); throw new BusinessException("剩余次数不足");
} }
userCardLog.setNum(userCard.getNum()-1); userCardLog.setNum(userCard.getNum() - 1);
} }
userCardService.updateById(userCard); userCardService.updateById(userCard);
@@ -363,7 +382,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
order.setExpirationTime(DateUtil.offset(DateUtil.date(), DateField.YEAR, 10)); order.setExpirationTime(DateUtil.offset(DateUtil.date(), DateField.YEAR, 10));
orderService.updateById(order); orderService.updateById(order);
// 更新订单信息表的支付状态 // 更新订单信息表的支付状态
orderInfoService.update(new LambdaUpdateWrapper<OrderInfo>().eq(OrderInfo::getOrderId,order.getOrderId()).set(OrderInfo::getPayStatus,1)); orderInfoService.update(new LambdaUpdateWrapper<OrderInfo>().eq(OrderInfo::getOrderId, order.getOrderId()).set(OrderInfo::getPayStatus, 1));
// 发放积分 // 发放积分
usersService.addIntegral(order); usersService.addIntegral(order);
return true; return true;
@@ -77,4 +77,9 @@ public class UsersServiceImpl extends ServiceImpl<UsersMapper, Users> implements
integralLogService.save(integralLog); integralLogService.save(integralLog);
} }
@Override
public Users getByPhone(String phone) {
return getOne(new LambdaUpdateWrapper<Users>().eq(Users::getPhone,phone).last("limit 1"));
}
} }
@@ -34,7 +34,7 @@ public class OrderInfoTask extends BaseController {
/** /**
* 自动处理过期订单任务 * 自动处理过期订单任务
*/ */
@Scheduled(cron="*/10 * * * * *") // @Scheduled(cron="*/10 * * * * *")
@Transactional(rollbackFor = {Exception.class}) @Transactional(rollbackFor = {Exception.class})
public void settledExpirationOrder() { public void settledExpirationOrder() {
final Order order = new Order(); final Order order = new Order();
@@ -57,7 +57,7 @@ public class OrderInfoTask extends BaseController {
* 自动处理过期订单任务(游泳馆专用) * 自动处理过期订单任务(游泳馆专用)
* Scheduled(cron="0 30 21 * * ?") * Scheduled(cron="0 30 21 * * ?")
*/ */
@Scheduled(cron="*/30 * * * * *") // @Scheduled(cron="*/30 * * * * *")
@Transactional(rollbackFor = {Exception.class}) @Transactional(rollbackFor = {Exception.class})
public void settledExpirationOrderBy3028() { public void settledExpirationOrderBy3028() {
final Order order = new Order(); final Order order = new Order();
@@ -32,7 +32,7 @@ public class OrderTask extends BaseController {
/** /**
* 自动处理过期订单任务 * 自动处理过期订单任务
*/ */
@Scheduled(fixedDelay = 2000, initialDelay = 2000) // @Scheduled(fixedDelay = 2000, initialDelay = 2000)
@Transactional(rollbackFor = {Exception.class}) @Transactional(rollbackFor = {Exception.class})
public void settledExpirationOrder() { public void settledExpirationOrder() {
final OrderParam p = new OrderParam(); final OrderParam p = new OrderParam();