diff --git a/src/main/java/com/sqx/modules/app/dao/UserMoneyDao.java b/src/main/java/com/sqx/modules/app/dao/UserMoneyDao.java index 3e7ade9..ddf2369 100644 --- a/src/main/java/com/sqx/modules/app/dao/UserMoneyDao.java +++ b/src/main/java/com/sqx/modules/app/dao/UserMoneyDao.java @@ -14,4 +14,5 @@ public interface UserMoneyDao extends BaseMapper { void updateCashDeposit(@Param("type") Integer type, @Param("userId") Long userId,@Param("cashDeposit") Double cashDeposit); + void updateMoney(UserMoney userMoney); } diff --git a/src/main/java/com/sqx/modules/app/dao/UserMoneyDetailsDao.java b/src/main/java/com/sqx/modules/app/dao/UserMoneyDetailsDao.java index 0e0b8d3..ea4af03 100644 --- a/src/main/java/com/sqx/modules/app/dao/UserMoneyDetailsDao.java +++ b/src/main/java/com/sqx/modules/app/dao/UserMoneyDetailsDao.java @@ -13,4 +13,5 @@ public interface UserMoneyDetailsDao extends BaseMapper { BigDecimal selectSumRefund(Long userId,String startTime,String endTime); + int insert(UserMoneyDetails userMoneyDetails); } diff --git a/src/main/java/com/sqx/modules/app/entity/UserMoneyDetails.java b/src/main/java/com/sqx/modules/app/entity/UserMoneyDetails.java index 1a4d571..e29a1f0 100644 --- a/src/main/java/com/sqx/modules/app/entity/UserMoneyDetails.java +++ b/src/main/java/com/sqx/modules/app/entity/UserMoneyDetails.java @@ -78,6 +78,7 @@ public class UserMoneyDetails implements Serializable { */ @ApiModelProperty("余额") private BigDecimal balance; + /** * 是否操作余额:1未操作余额 ,2操作余额 */ @@ -86,4 +87,16 @@ public class UserMoneyDetails implements Serializable { //技师id private Long artificerId; + /** + * 所属角色 1用户 2技师 + */ + + private Integer blRole; + + /** + * 钱包现金标识 1钱包 2现金 + */ + + private Integer blFlag; + } diff --git a/src/main/java/com/sqx/modules/app/service/UserMoneyDetailsService.java b/src/main/java/com/sqx/modules/app/service/UserMoneyDetailsService.java index d8de18d..b181552 100644 --- a/src/main/java/com/sqx/modules/app/service/UserMoneyDetailsService.java +++ b/src/main/java/com/sqx/modules/app/service/UserMoneyDetailsService.java @@ -23,4 +23,6 @@ public interface UserMoneyDetailsService extends IService { List selectIncome(Period period); + int insert(UserMoneyDetails userMoneyDetails); + } diff --git a/src/main/java/com/sqx/modules/app/service/UserMoneyService.java b/src/main/java/com/sqx/modules/app/service/UserMoneyService.java index d57e4f6..08f22e5 100644 --- a/src/main/java/com/sqx/modules/app/service/UserMoneyService.java +++ b/src/main/java/com/sqx/modules/app/service/UserMoneyService.java @@ -19,6 +19,8 @@ public interface UserMoneyService extends IService { void updateMoney(int i, Long userId, double money); + void updateMoney(UserMoney userMoney); + Double selectMyProfit(Long userId); PageUtils balanceDetailed(@RequestAttribute Long userId, Page ipage); diff --git a/src/main/java/com/sqx/modules/app/service/impl/UserMoneyDetailsServiceImpl.java b/src/main/java/com/sqx/modules/app/service/impl/UserMoneyDetailsServiceImpl.java index d24d4ec..675423f 100644 --- a/src/main/java/com/sqx/modules/app/service/impl/UserMoneyDetailsServiceImpl.java +++ b/src/main/java/com/sqx/modules/app/service/impl/UserMoneyDetailsServiceImpl.java @@ -352,4 +352,16 @@ public class UserMoneyDetailsServiceImpl extends ServiceImpl page2 = baseMapper.selectList(queryWrapper); return page2; } + + /** + * 插入明细表 + * update by caolei 2024-6-9 + * @param userMoneyDetails + * @return + */ + @Override + public int insert(UserMoneyDetails userMoneyDetails){ + return baseMapper.insert(userMoneyDetails); + } + } diff --git a/src/main/java/com/sqx/modules/app/service/impl/UserMoneyServiceImpl.java b/src/main/java/com/sqx/modules/app/service/impl/UserMoneyServiceImpl.java index 8a77cd9..1a51d6b 100644 --- a/src/main/java/com/sqx/modules/app/service/impl/UserMoneyServiceImpl.java +++ b/src/main/java/com/sqx/modules/app/service/impl/UserMoneyServiceImpl.java @@ -104,6 +104,11 @@ public class UserMoneyServiceImpl extends ServiceImpl i baseMapper.updateMayMoney(i, userId, money); } + @Override + public void updateMoney(UserMoney userMoney){ + baseMapper.updateMoney(userMoney); + } + @Override public UserMoney selectUserMoneyByUserId(Long userId) { UserMoney userMoney = baseMapper.selectOne(new QueryWrapper().eq("user_id", userId)); diff --git a/src/main/java/com/sqx/modules/artificer/service/impl/OrdersServiceImpl.java b/src/main/java/com/sqx/modules/artificer/service/impl/OrdersServiceImpl.java index fe0c43e..7fd44a5 100644 --- a/src/main/java/com/sqx/modules/artificer/service/impl/OrdersServiceImpl.java +++ b/src/main/java/com/sqx/modules/artificer/service/impl/OrdersServiceImpl.java @@ -1486,11 +1486,13 @@ public class OrdersServiceImpl extends ServiceImpl implements userMoneyDetails.setContent("订单号:" + orders.getOrdersNo() + ",已经下单成功!"); userMoneyDetails.setTitle("支付订单"); userMoneyDetails.setType(2); + userMoneyDetails.setState(2); userMoneyDetails.setCreateTime(simpleDateFormat.format(new Date())); + userMoneyDetails.setBlRole(1); + userMoneyDetails.setBlFlag(1); userMoneyDetailsService.save(userMoneyDetails); } - orders.setStatus(2); orders.setPayWay(5); orders.setPayTime(simpleDateFormat.format(new Date())); diff --git a/src/main/java/com/sqx/modules/bl/massage/entity/MassagePackage.java b/src/main/java/com/sqx/modules/bl/massage/entity/MassagePackage.java index 9286d62..7a6bae8 100644 --- a/src/main/java/com/sqx/modules/bl/massage/entity/MassagePackage.java +++ b/src/main/java/com/sqx/modules/bl/massage/entity/MassagePackage.java @@ -11,8 +11,9 @@ import java.math.BigDecimal; /** * @description massage_package + * 服务包-服务套餐、项目次卡、服务疗程 * @author caolei - * @date 2024-6-5 + * @date 2024-06-05 */ @Data @TableName("bl_massage_package") diff --git a/src/main/java/com/sqx/modules/bl/massage/entity/MassagePackageDetail.java b/src/main/java/com/sqx/modules/bl/massage/entity/MassagePackageDetail.java index 952eaa2..edbe4f6 100644 --- a/src/main/java/com/sqx/modules/bl/massage/entity/MassagePackageDetail.java +++ b/src/main/java/com/sqx/modules/bl/massage/entity/MassagePackageDetail.java @@ -11,8 +11,9 @@ import java.math.BigDecimal; /** * @description bl_massage_package_detail + * 服务包-明细表 * @author caolei - * @date 2024-6-5 + * @date 2024-06-05 */ @Data @TableName("bl_massage_package_detail") diff --git a/src/main/java/com/sqx/modules/bl/order/app/AppUserPackageOrderController.java b/src/main/java/com/sqx/modules/bl/order/app/AppUserPackageOrderController.java new file mode 100644 index 0000000..ec626ba --- /dev/null +++ b/src/main/java/com/sqx/modules/bl/order/app/AppUserPackageOrderController.java @@ -0,0 +1,39 @@ +package com.sqx.modules.bl.order.app; + +import com.sqx.common.utils.Result; +import com.sqx.modules.app.annotation.Login; +import com.sqx.modules.artificer.entity.Orders; +import com.sqx.modules.bl.order.entity.UserPackageOrder; +import com.sqx.modules.bl.order.service.UserPackageOrderService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; + + +@RestController +@RequestMapping("/app/user/package/order") +@Api(value = "用户购买服务包订单管理", tags = {"用户购买服务包订单"}) +public class AppUserPackageOrderController { + + @Autowired + private UserPackageOrderService service; + +// @Login + @PostMapping("/insertOrders") + @ApiOperation("添加订单") + public Result insertOrders(@RequestBody UserPackageOrder userPackageOrder){ + //入参:用户ID,代金券IDS,原总金额,应付总金额,会员优惠比, + return service.insertOrders(userPackageOrder); + } + + @PostMapping("/payOrder") + @ApiOperation("钱包支付订单") + public Result payOrder(Long ordersId){ + //入参:ordersId + return service.payOrder(ordersId); + } + +} diff --git a/src/main/java/com/sqx/modules/bl/order/dao/UserPackageOrderDao.java b/src/main/java/com/sqx/modules/bl/order/dao/UserPackageOrderDao.java index efc371b..68dbc37 100644 --- a/src/main/java/com/sqx/modules/bl/order/dao/UserPackageOrderDao.java +++ b/src/main/java/com/sqx/modules/bl/order/dao/UserPackageOrderDao.java @@ -14,6 +14,10 @@ public interface UserPackageOrderDao extends BaseMapper { IPage findPage(Page page, @Param("params") UserPackageOrder userPackageOrder); + UserPackageOrder getById(Long ordersId); + + UserPackageOrder getByNo(String ordersNo); + List findCoupon(UserPackageOrder userPackageOrder); int refund(UserPackageOrder userPackageOrder); @@ -22,4 +26,8 @@ public interface UserPackageOrderDao extends BaseMapper { int insertCoupon(UserPackageOrder userPackageOrder); + List selectOrdersStatusByTime(String time); + + int updateStatus(UserPackageOrder userPackageOrder); + } \ No newline at end of file diff --git a/src/main/java/com/sqx/modules/bl/order/dao/UserPackageOrdersMappingDao.java b/src/main/java/com/sqx/modules/bl/order/dao/UserPackageOrdersMappingDao.java new file mode 100644 index 0000000..3f82092 --- /dev/null +++ b/src/main/java/com/sqx/modules/bl/order/dao/UserPackageOrdersMappingDao.java @@ -0,0 +1,18 @@ +package com.sqx.modules.bl.order.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.sqx.modules.bl.order.entity.UserPackageOrdersMapping; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface UserPackageOrdersMappingDao extends BaseMapper { + + List findList(UserPackageOrdersMapping userPackageOrdersMapping); + + List findListByOrdersId(Long ordersId); + + int insert(UserPackageOrdersMapping userPackageOrdersMapping); + +} \ No newline at end of file diff --git a/src/main/java/com/sqx/modules/bl/order/entity/UserPackage.java b/src/main/java/com/sqx/modules/bl/order/entity/UserPackage.java index 2c7b02d..5668b00 100644 --- a/src/main/java/com/sqx/modules/bl/order/entity/UserPackage.java +++ b/src/main/java/com/sqx/modules/bl/order/entity/UserPackage.java @@ -11,6 +11,7 @@ import java.math.BigDecimal; /** * @description bl_user_package + * 用户-服务包表 * @author caolei * @date 2024-6-8 */ diff --git a/src/main/java/com/sqx/modules/bl/order/entity/UserPackageDetail.java b/src/main/java/com/sqx/modules/bl/order/entity/UserPackageDetail.java index 5c78280..22635f5 100644 --- a/src/main/java/com/sqx/modules/bl/order/entity/UserPackageDetail.java +++ b/src/main/java/com/sqx/modules/bl/order/entity/UserPackageDetail.java @@ -10,7 +10,8 @@ import java.io.Serializable; import java.math.BigDecimal; /** - * @description bl_user_package_order + * @description bl_user_package_detail + * 用户-服务包-明细表 * @author caolei * @date 2024-6-8 */ diff --git a/src/main/java/com/sqx/modules/bl/order/entity/UserPackageOrder.java b/src/main/java/com/sqx/modules/bl/order/entity/UserPackageOrder.java index 8ec4bf5..ca43791 100644 --- a/src/main/java/com/sqx/modules/bl/order/entity/UserPackageOrder.java +++ b/src/main/java/com/sqx/modules/bl/order/entity/UserPackageOrder.java @@ -8,9 +8,11 @@ import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; +import java.util.List; /** * @description bl_user_package_order + * 用户-服务包-订单-主表 * @author caolei * @date 2024-6-8 */ @@ -43,36 +45,11 @@ public class UserPackageOrder implements Serializable { @TableField(exist = false) private String userName; - /** - * 服务包id - */ - private Long packageId; - - /** - * 服务包名称 - */ - private String packageName; - - /** - * 服务包类型 - */ - private Integer type; - /** * 会员优惠比例 */ private BigDecimal vipRate; - /** - * 单价 - */ - private BigDecimal price; - - /** - * 数量 - */ - private Integer quantity; - /** * 原总金额 */ @@ -133,6 +110,12 @@ public class UserPackageOrder implements Serializable { */ private Long userCouponId; + /** + * 创建时间 + */ + private String createTime; + + /** * 代金券名称 */ @@ -145,5 +128,8 @@ public class UserPackageOrder implements Serializable { @TableField(exist = false) private Integer limit; + @TableField(exist = false) + private List ordersPackageList; + public UserPackageOrder() {} } diff --git a/src/main/java/com/sqx/modules/bl/order/entity/UserPackageOrdersMapping.java b/src/main/java/com/sqx/modules/bl/order/entity/UserPackageOrdersMapping.java new file mode 100644 index 0000000..0092621 --- /dev/null +++ b/src/main/java/com/sqx/modules/bl/order/entity/UserPackageOrdersMapping.java @@ -0,0 +1,44 @@ +package com.sqx.modules.bl.order.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +/** + * @description bl_user_package_order_mapping + * 用户-服务包-订单-服务包与订单映射关系表 + * @author caolei + * @date 2024-06-09 + */ +@Data +@TableName("bl_user_package_order_mapping") +public class UserPackageOrdersMapping implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(type = IdType.AUTO) + /** + * 订单服务id + */ + private Long mappingId; + + /** + * 订单id + */ + private Long ordersId; + + /** + * 服务包id + */ + private Long packageId; + + /** + * 数量 + */ + private Integer num; + + public UserPackageOrdersMapping() {} +} diff --git a/src/main/java/com/sqx/modules/bl/order/service/UserPackageOrderService.java b/src/main/java/com/sqx/modules/bl/order/service/UserPackageOrderService.java index ffcb99d..61603b5 100644 --- a/src/main/java/com/sqx/modules/bl/order/service/UserPackageOrderService.java +++ b/src/main/java/com/sqx/modules/bl/order/service/UserPackageOrderService.java @@ -4,10 +4,14 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.sqx.common.utils.Result; import com.sqx.modules.bl.order.entity.UserPackageOrder; +import javax.servlet.http.HttpServletRequest; + public interface UserPackageOrderService extends IService { Result findPage(UserPackageOrder userPackageOrder); Result findCoupon(UserPackageOrder userPackageOrder); - int refund(UserPackageOrder userPackageOrder); + void refund(UserPackageOrder userPackageOrder); - void buy(UserPackageOrder userPackageOrder); + Result insertOrders(UserPackageOrder userPackageOrder); + + Result payOrder(Long ordersId); } diff --git a/src/main/java/com/sqx/modules/bl/order/service/UserPackageOrdersMappingService.java b/src/main/java/com/sqx/modules/bl/order/service/UserPackageOrdersMappingService.java new file mode 100644 index 0000000..ba7979a --- /dev/null +++ b/src/main/java/com/sqx/modules/bl/order/service/UserPackageOrdersMappingService.java @@ -0,0 +1,15 @@ +package com.sqx.modules.bl.order.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.sqx.modules.bl.order.entity.UserPackageOrdersMapping; + +import java.util.List; + +public interface UserPackageOrdersMappingService extends IService { + + List findList(UserPackageOrdersMapping userPackageOrdersMapping); + + List findListByOrdersId(Long ordersId); + + int insert(UserPackageOrdersMapping userPackageOrdersMapping); +} \ No newline at end of file diff --git a/src/main/java/com/sqx/modules/bl/order/service/impl/UserPackageOrderServiceImpl.java b/src/main/java/com/sqx/modules/bl/order/service/impl/UserPackageOrderServiceImpl.java index 04d114c..80cf620 100644 --- a/src/main/java/com/sqx/modules/bl/order/service/impl/UserPackageOrderServiceImpl.java +++ b/src/main/java/com/sqx/modules/bl/order/service/impl/UserPackageOrderServiceImpl.java @@ -8,8 +8,12 @@ import com.google.common.collect.Lists; import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; import com.sqx.modules.app.dao.VipDetailsDao; +import com.sqx.modules.app.entity.UserMoney; +import com.sqx.modules.app.entity.UserMoneyDetails; import com.sqx.modules.app.entity.UserVip; import com.sqx.modules.app.entity.VipDetails; +import com.sqx.modules.app.service.UserMoneyDetailsService; +import com.sqx.modules.app.service.UserMoneyService; import com.sqx.modules.app.service.UserVipService; import com.sqx.modules.bl.massage.entity.MassagePackage; import com.sqx.modules.bl.massage.service.MassagePackageService; @@ -17,18 +21,23 @@ import com.sqx.modules.bl.order.dao.UserPackageOrderDao; import com.sqx.modules.bl.order.entity.UserPackage; import com.sqx.modules.bl.order.entity.UserPackageDetail; import com.sqx.modules.bl.order.entity.UserPackageOrder; +import com.sqx.modules.bl.order.entity.UserPackageOrdersMapping; import com.sqx.modules.bl.order.service.UserPackageDetailService; import com.sqx.modules.bl.order.service.UserPackageOrderService; +import com.sqx.modules.bl.order.service.UserPackageOrdersMappingService; import com.sqx.modules.bl.order.service.UserPackageService; +import com.sqx.modules.common.service.CommonInfoService; import com.sqx.modules.coupon.entity.CouponUser; import com.sqx.modules.coupon.service.CouponUserService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; +import java.util.concurrent.locks.ReentrantReadWriteLock; @Service public class UserPackageOrderServiceImpl extends ServiceImpl implements UserPackageOrderService { @@ -51,6 +60,20 @@ public class UserPackageOrderServiceImpl extends ServiceImpl pages=new Page<>(userPackageOrder.getPage(),userPackageOrder.getLimit()); @@ -63,60 +86,42 @@ public class UserPackageOrderServiceImpl extends ServiceImpl= System.currentTimeMillis()) { - VipDetails vipDetails = vipDetailsDao.selectOne(new QueryWrapper().eq("vip_name_type", userVip.getVipNameType())); - if(vipDetails != null){ - vipRate = vipDetails.getRate(); - } - } - } catch (Exception e) { - e.getMessage(); - } - } - } - userPackageOrder.setVipRate(vipRate); - - //获取服务包信息 - MassagePackage massagePackage = massagePackageService.getById(packageId); - BigDecimal price = massagePackage.getPrice(); - userPackageOrder.setPackageName(massagePackage.getTitle()); - userPackageOrder.setType(massagePackage.getType()); - userPackageOrder.setPrice(price); - BigDecimal oldSumMoney = (price.multiply(new BigDecimal(quantity))); - userPackageOrder.setOldSumMoney(oldSumMoney); - BigDecimal sumMoney = oldSumMoney.multiply(vipRate).divide(new BigDecimal(100)); - userPackageOrder.setSumMoney(sumMoney); - - List CouponUserList = Lists.newArrayList(); - if(payMoney != null && payMoney.compareTo(new BigDecimal(0)) > 0){ - //不做处理 - }else{ - //获取代金券,计算 + public Result insertOrders(UserPackageOrder userPackageOrder){ + reentrantReadWriteLock.writeLock().lock(); + try { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + List CouponUserList = Lists.newArrayList(); + String couponIds = userPackageOrder.getCouponId(); if(couponIds.length()>0){ String[] couponArr = couponIds.trim().split(","); BigDecimal couponMoney = new BigDecimal(0); @@ -125,6 +130,9 @@ public class UserPackageOrderServiceImpl extends ServiceImpl0){ - for(int i=0;ilambdaUpdate().eq(CouponUser::getId, couponUser.getId()).set(CouponUser::getStatus, 1)); - } - } - for(int i=0;i userPackageDetailList = userPackageDetailService.findMassagePackageDetails(userPackageDetail); - if(userPackageDetailList.size()>0){ - for(int j=0;j= System.currentTimeMillis()) { + VipDetails vipDetails = vipDetailsDao.selectOne(new QueryWrapper().eq("vip_name_type", userVip.getVipNameType())); + if(vipDetails != null){ + vipRate = vipDetails.getRate(); + } + } + } catch (Exception e) { + e.getMessage(); + } + } + } + userPackageOrder.setVipRate(vipRate); + } + + if(userPackageOrder.getSumMoney() == null || BigDecimal.ZERO.compareTo(userPackageOrder.getSumMoney()) == 0){ + BigDecimal oldSumMoney = userPackageOrder.getOldSumMoney(); + BigDecimal sumMoney = oldSumMoney.multiply(userPackageOrder.getVipRate()).divide(new BigDecimal(100)); + userPackageOrder.setSumMoney(sumMoney); + } + userPackageOrder.setCreateTime(simpleDateFormat.format(new Date())); + userPackageOrder.setStatus(0); + userPackageOrder.setOrdersNo(getGeneralOrder()); + if(userPackageOrder.getPayMoney() == null || BigDecimal.ZERO.compareTo(userPackageOrder.getPayMoney()) == 0){ + BigDecimal payMoney = userPackageOrder.getSumMoney().subtract(userPackageOrder.getCouponMoney()); + userPackageOrder.setPayMoney(payMoney); + } + //插入订单表 + baseMapper.insertOrders(userPackageOrder); + Long ordersId = userPackageOrder.getOrdersId(); + + //插入订单代金券表 + if(CouponUserList.size()>0){ + for(int i=0;ilambdaUpdate().eq(CouponUser::getId, couponUser.getId()).set(CouponUser::getStatus, 1)); + } + } + + //插入用户-服务包-订单-服务包与订单映射关系表 + List ordersPackageList = userPackageOrder.getOrdersPackageList(); + for (UserPackageOrdersMapping ordersPackage : ordersPackageList) { + ordersPackage.setOrdersId(ordersId); + userPackageOrdersMappingService.insert(ordersPackage); + } + + } catch (Exception e) { + e.printStackTrace(); + log.error("添加订单异常" + e.getMessage(), e); + } finally { + reentrantReadWriteLock.writeLock().unlock(); + } + return Result.success().put("data", userPackageOrder); + } + + @Override + public Result payOrder(Long ordersId) { + try { + UserPackageOrder orders = baseMapper.getById(ordersId); + if (orders == null) { + return Result.error("订单生成失败,请重新下单!"); + }else if(orders.getStatus()==1){ + return Result.error("订单已支付!"); + }else if(orders.getStatus()==2){ + return Result.error("订单已退款!"); + }else if(orders.getStatus()==3){ + return Result.error("订单支付超时,请发起支付!"); + } + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + UserMoney userMoney = userMoneyService.selectUserMoneyByUserId(orders.getUserId()); + if (userMoney.getMoney().doubleValue() < orders.getPayMoney().doubleValue()) { + return Result.error("钱包余额不足,请充值!"); + } + + userMoneyService.updateMoney(2, orders.getUserId(), orders.getPayMoney().doubleValue()); + UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); + //查询用户当前余额 + UserMoney userNowMoney = userMoneyService.selectUserMoneyByUserId(orders.getUserId()); + //插入余额 + userMoneyDetails.setBalance(userNowMoney.getMoney()); + //插入操作类型为已操作用户余额 + userMoneyDetails.setManipulateType(2); + userMoneyDetails.setMoney(orders.getPayMoney()); + userMoneyDetails.setUserId(orders.getUserId()); + userMoneyDetails.setContent("订单号:" + orders.getOrdersNo() + ",已经下单成功!"); + userMoneyDetails.setTitle("支付服务包订单"); + userMoneyDetails.setType(2); + userMoneyDetails.setState(2); + userMoneyDetails.setCreateTime(simpleDateFormat.format(new Date())); + userMoneyDetails.setBlRole(1); + userMoneyDetails.setBlFlag(1); + userMoneyDetailsService.insert(userMoneyDetails); + + orders.setStatus(2); + orders.setPayWay(5); + orders.setPayTime(simpleDateFormat.format(new Date())); + baseMapper.updateStatus(orders); + + //获取订单-服务包映射关系列表 + List mappingList = userPackageOrdersMappingService.findListByOrdersId(ordersId); + for (UserPackageOrdersMapping ordersPackage : mappingList) { + int quantity = ordersPackage.getNum(); + MassagePackage massagePackage = massagePackageService.getById(ordersPackage.getPackageId()); + //修改服务包销量 + int sales = massagePackage.getSales(); + sales = sales+quantity; + massagePackage.setSales(sales); + massagePackageService.updateSales(massagePackage); + for(int i=0;i userPackageDetailList = userPackageDetailService.findMassagePackageDetails(userPackageDetail); + if(userPackageDetailList.size()>0){ + for(int j=0;j ordersList = baseMapper.selectOrdersStatusByTime(value1); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + for (UserPackageOrder orders : ordersList) { + //取消订单 + orders.setStatus(3);//取消状态 + orders.setPayTime(simpleDateFormat.format(new Date()));//取消时间 + baseMapper.updateById(orders); + //取消代金券 + if (orders.getCouponId() != null) { + String couponIds = orders.getCouponId(); + if(couponIds.length()>0) { + String[] couponArr = couponIds.trim().split(","); + for(int i=0;i implements UserPackageOrdersMappingService { + + @Override + public List findList(UserPackageOrdersMapping userPackageOrdersMapping){ + return baseMapper.findList(userPackageOrdersMapping); + } + + @Override + public List findListByOrdersId(Long ordersId){ + return baseMapper.findListByOrdersId(ordersId); + } + + + @Override + public int insert(UserPackageOrdersMapping userPackageOrdersMapping){ + return baseMapper.insert(userPackageOrdersMapping); + } + +} \ No newline at end of file diff --git a/src/main/java/com/sqx/modules/pay/controller/app/AliPayController.java b/src/main/java/com/sqx/modules/pay/controller/app/AliPayController.java index f11b14b..1f5d657 100644 --- a/src/main/java/com/sqx/modules/pay/controller/app/AliPayController.java +++ b/src/main/java/com/sqx/modules/pay/controller/app/AliPayController.java @@ -22,13 +22,20 @@ import com.sqx.modules.app.dao.UserMoneyDao; import com.sqx.modules.app.dao.UserVipDao; import com.sqx.modules.app.dao.VipDetailsDao; import com.sqx.modules.app.entity.*; -import com.sqx.modules.app.service.UserCertificationService; -import com.sqx.modules.app.service.UserMoneyArtificerService; -import com.sqx.modules.app.service.UserMoneyDetailsService; -import com.sqx.modules.app.service.UserService; +import com.sqx.modules.app.service.*; import com.sqx.modules.artificer.dao.OrdersDao; import com.sqx.modules.artificer.entity.*; import com.sqx.modules.artificer.service.*; +import com.sqx.modules.bl.massage.entity.MassagePackage; +import com.sqx.modules.bl.massage.service.MassagePackageService; +import com.sqx.modules.bl.order.dao.UserPackageOrderDao; +import com.sqx.modules.bl.order.entity.UserPackage; +import com.sqx.modules.bl.order.entity.UserPackageDetail; +import com.sqx.modules.bl.order.entity.UserPackageOrder; +import com.sqx.modules.bl.order.entity.UserPackageOrdersMapping; +import com.sqx.modules.bl.order.service.UserPackageDetailService; +import com.sqx.modules.bl.order.service.UserPackageOrdersMappingService; +import com.sqx.modules.bl.order.service.UserPackageService; import com.sqx.modules.common.entity.CommonInfo; import com.sqx.modules.common.service.CommonInfoService; import com.sqx.modules.consortia.entity.Consortia; @@ -78,6 +85,8 @@ public class AliPayController { @Autowired private UserMoneyDao userMoneyDao; @Autowired + private UserMoneyService userMoneyService; + @Autowired private PayDetailsDao payDetailsDao; @Autowired private UserMoneyDetailsService userMoneyDetailsService; @@ -113,6 +122,17 @@ public class AliPayController { private UserMoneyArtificerService userMoneyArtificerService; @Autowired private ArtificerTimeService artificerTimeService; + @Autowired + private UserPackageOrderDao userPackageOrderDao; + @Autowired + MassagePackageService massagePackageService; + @Autowired + UserPackageService userPackageService; + @Autowired + UserPackageDetailService userPackageDetailService; + @Autowired + UserPackageOrdersMappingService userPackageOrdersMappingService; + private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -329,6 +349,21 @@ public class AliPayController { } ordersService.sendMsg(orders); + + UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); + userMoneyDetails.setManipulateType(1); + userMoneyDetails.setMoney(orders.getPayMoney()); + userMoneyDetails.setUserId(orders.getUserId()); + userMoneyDetails.setContent("订单号:" + orders.getOrdersNo() + ",已经下单成功!"); + userMoneyDetails.setTitle("支付服务包订单"); + userMoneyDetails.setType(2); + userMoneyDetails.setState(2); + userMoneyDetails.setCreateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + userMoneyDetails.setBlRole(1); + userMoneyDetails.setBlFlag(2); + userMoneyDetailsService.save(userMoneyDetails); + + } else if (payDetails.getType() == 2) { //缴纳保证金 Double cashDeposit = payDetails.getMoney(); @@ -342,23 +377,40 @@ public class AliPayController { userMoneyDetails.setUserId(userId); userMoneyDetails.setTitle("缴纳保证金"); userMoneyDetails.setContent("已缴纳保证金:" + cashDeposit + "元"); - userMoneyDetails.setType(1); +// userMoneyDetails.setType(1); + userMoneyDetails.setManipulateType(1); userMoneyDetails.setMoney(BigDecimal.valueOf(cashDeposit)); + userMoneyDetails.setType(2); userMoneyDetails.setState(2); userMoneyDetails.setClassify(1); userMoneyDetails.setCreateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + userMoneyDetails.setBlRole(2); + userMoneyDetails.setBlFlag(2); userMoneyDetailsService.save(userMoneyDetails); } else if (payDetails.getType() == 3) { PayClassify payClassify = payClassifyService.getById(Long.parseLong(payDetails.getRemark())); userMoneyDao.updateMayMoney(1, payDetails.getUserId(), payClassify.getPrice().doubleValue()); + //查询用户当前余额 + UserMoney userNowMoney = userMoneyService.selectUserMoneyByUserId(payDetails.getUserId()); + //钱包明细需要做调整2条记录,充值时钱包类型增加金额,现金类型减少金额 UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); + //插入余额 + userMoneyDetails.setBalance(userNowMoney.getMoney()); userMoneyDetails.setUserId(payDetails.getUserId()); userMoneyDetails.setTitle("支付宝充值"); userMoneyDetails.setContent("支付宝充值:"+payClassify.getPrice()); + userMoneyDetails.setManipulateType(2); userMoneyDetails.setType(1); + userMoneyDetails.setState(2); userMoneyDetails.setMoney(payClassify.getPrice()); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); userMoneyDetails.setCreateTime(sdf.format(new Date())); + userMoneyDetails.setBlRole(1); + userMoneyDetails.setBlFlag(1); + userMoneyDetailsService.save(userMoneyDetails); + userMoneyDetails.setType(2); + userMoneyDetails.setBlRole(1); + userMoneyDetails.setBlFlag(2); userMoneyDetailsService.save(userMoneyDetails); @@ -393,11 +445,15 @@ public class AliPayController { UserMoneyDetails userMoneyDetails=new UserMoneyDetails(); userMoneyDetails.setClassify(1); userMoneyDetails.setType(2); + userMoneyDetails.setState(2); + userMoneyDetails.setManipulateType(1); userMoneyDetails.setMoney(BigDecimal.valueOf(payDetails.getMoney())); userMoneyDetails.setUserId(payDetails.getUserId()); userMoneyDetails.setTitle("微信购买优惠券,卷包:"+couponIssue.getCouponIssueName()); userMoneyDetails.setContent("购买优惠券费用:"+payDetails.getMoney()); userMoneyDetails.setCreateTime(DateUtils.format(new Date())); + userMoneyDetails.setBlRole(1); + userMoneyDetails.setBlFlag(2); userMoneyDetailsService.save(userMoneyDetails); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); for(String couponId:couponIds){ @@ -478,7 +534,11 @@ public class AliPayController { } userMoneyDetails.setTitle("开通会员"); userMoneyDetails.setType(2); + userMoneyDetails.setState(2); + userMoneyDetails.setManipulateType(1); userMoneyDetails.setCreateTime(sdf.format(new Date())); + userMoneyDetails.setBlRole(1); + userMoneyDetails.setBlFlag(2); userMoneyDetailsService.save(userMoneyDetails); UserEntity userEntity = userService.selectUserById(userId); messageInfo.setTitle("开通会员"); @@ -533,18 +593,109 @@ public class AliPayController { userMoneyArtificerService.updateMoney(1, payDetails.getUserId(), artificerId,money); } Artificer artificer = artificerService.getById(artificerId); - + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //用户流水 UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); userMoneyDetails.setClassify(8); + userMoneyDetails.setManipulateType(1); userMoneyDetails.setUserId(payDetails.getUserId()); - userMoneyDetails.setTitle("支付宝充值"); + userMoneyDetails.setTitle("支付宝给技师充值"); userMoneyDetails.setContent("指定技师“"+artificer.getArtificerName()+"”钱包支付宝充值:"+money); - userMoneyDetails.setType(1); + userMoneyDetails.setType(2); + userMoneyDetails.setState(2); userMoneyDetails.setMoney(BigDecimal.valueOf(money)); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + userMoneyDetails.setArtificerId(artificerId); userMoneyDetails.setCreateTime(sdf.format(new Date())); + userMoneyDetails.setBlRole(1); + userMoneyDetails.setBlFlag(2); + userMoneyDetailsService.save(userMoneyDetails); + //技师流水 + UserEntity userEntity = userService.queryByUserId(payDetails.getUserId()); + userMoneyDao.updateMayMoney(1, artificerId, money); + //查询技师当前余额 + UserMoney userNowMoney = userMoneyService.selectUserMoneyByUserId(artificerId); + UserMoneyDetails userMoneyDetails2 = new UserMoneyDetails(); + //插入余额 + userMoneyDetails2.setBalance(userNowMoney.getMoney()); + userMoneyDetails.setManipulateType(2); + userMoneyDetails2.setClassify(8); + userMoneyDetails2.setUserId(artificerId); + userMoneyDetails2.setTitle("用户支付宝充值"); + userMoneyDetails2.setContent("用户“"+userEntity.getUserName()+"”支付宝充值:"+money); + userMoneyDetails2.setType(1); + userMoneyDetails2.setState(2); + userMoneyDetails2.setMoney(BigDecimal.valueOf(money)); + userMoneyDetails2.setCreateTime(sdf.format(new Date())); + userMoneyDetails2.setBlRole(2); + userMoneyDetails2.setBlFlag(1); + userMoneyDetailsService.save(userMoneyDetails); + }else if(payDetails.getType()==7){ + //服务包下单,分单 + UserPackageOrder orders = userPackageOrderDao.getByNo(outTradeNo); + UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); + userMoneyDetails.setManipulateType(1); + userMoneyDetails.setUserId(orders.getUserId()); + userMoneyDetails.setMoney(orders.getPayMoney()); + userMoneyDetails.setContent("订单号:" + orders.getOrdersNo() + ",已经下单成功!"); + userMoneyDetails.setTitle("支付服务包订单"); + userMoneyDetails.setType(2); + userMoneyDetails.setState(2); + userMoneyDetails.setCreateTime(sdf.format(new Date())); + userMoneyDetails.setBlRole(1); + userMoneyDetails.setBlFlag(1); userMoneyDetailsService.save(userMoneyDetails); + orders.setStatus(2); + orders.setPayWay(payDetails.getClassify()); + orders.setPayTime(sdf.format(new Date())); + userPackageOrderDao.updateStatus(orders); + + //获取订单-服务包映射关系列表 + List mappingList = userPackageOrdersMappingService.findListByOrdersId(orders.getOrdersId()); + for (UserPackageOrdersMapping ordersPackage : mappingList) { + int quantity = ordersPackage.getNum(); + MassagePackage massagePackage = massagePackageService.getById(ordersPackage.getPackageId()); + //修改服务包销量 + int sales = massagePackage.getSales(); + sales = sales+quantity; + massagePackage.setSales(sales); + massagePackageService.updateSales(massagePackage); + for(int i=0;i userPackageDetailList = userPackageDetailService.findMassagePackageDetails(userPackageDetail); + if(userPackageDetailList.size()>0){ + for(int j=0;j0){ @@ -834,11 +917,15 @@ public class WxServiceImpl implements WxService { UserMoneyDetails userMoneyDetails=new UserMoneyDetails(); userMoneyDetails.setClassify(1); userMoneyDetails.setType(2); + userMoneyDetails.setState(2); + userMoneyDetails.setManipulateType(1); userMoneyDetails.setMoney(BigDecimal.valueOf(payDetails.getMoney())); userMoneyDetails.setUserId(payDetails.getUserId()); userMoneyDetails.setTitle("微信购买优惠券,卷包:"+couponIssue.getCouponIssueName()); userMoneyDetails.setContent("购买优惠券费用:"+payDetails.getMoney()); userMoneyDetails.setCreateTime(DateUtils.format(new Date())); + userMoneyDetails.setBlRole(1); + userMoneyDetails.setBlFlag(2); userMoneyDetailsService.save(userMoneyDetails); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); for(String couponId:couponIds){ @@ -919,7 +1006,11 @@ public class WxServiceImpl implements WxService { } userMoneyDetails.setTitle("开通会员"); userMoneyDetails.setType(2); + userMoneyDetails.setState(2); + userMoneyDetails.setManipulateType(1); userMoneyDetails.setCreateTime(sdf.format(new Date())); + userMoneyDetails.setBlRole(1); + userMoneyDetails.setBlFlag(2); userMoneyDetailsService.save(userMoneyDetails); UserEntity userEntity = userService.selectUserById(userId); messageInfo.setTitle("开通会员"); @@ -973,18 +1064,109 @@ public class WxServiceImpl implements WxService { userMoneyArtificerService.updateMoney(1, payDetails.getUserId(),artificerId, money); } Artificer artificer = artificerService.getById(artificerId); - + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //用户流水 UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); userMoneyDetails.setClassify(8); + userMoneyDetails.setManipulateType(1); userMoneyDetails.setUserId(payDetails.getUserId()); - userMoneyDetails.setTitle("微信充值"); + userMoneyDetails.setTitle("微信给技师充值"); userMoneyDetails.setContent("指定技师“"+artificer.getArtificerName()+"”钱包微信充值:"+money); - userMoneyDetails.setType(1); + userMoneyDetails.setType(2); + userMoneyDetails.setState(2); userMoneyDetails.setMoney(BigDecimal.valueOf(money)); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + userMoneyDetails.setArtificerId(artificerId); userMoneyDetails.setCreateTime(sdf.format(new Date())); + userMoneyDetails.setBlRole(1); + userMoneyDetails.setBlFlag(2); + userMoneyDetailsService.save(userMoneyDetails); + //技师流水 + UserEntity userEntity = userService.queryByUserId(payDetails.getUserId()); + userMoneyDao.updateMayMoney(1, artificerId, money); + //查询技师当前余额 + UserMoney userNowMoney = userMoneyService.selectUserMoneyByUserId(artificerId); + UserMoneyDetails userMoneyDetails2 = new UserMoneyDetails(); + //插入余额 + userMoneyDetails2.setBalance(userNowMoney.getMoney()); + userMoneyDetails.setManipulateType(2); + userMoneyDetails2.setClassify(8); + userMoneyDetails2.setUserId(artificerId); + userMoneyDetails2.setTitle("用户微信充值"); + userMoneyDetails2.setContent("用户“"+userEntity.getUserName()+"”微信充值:"+money); + userMoneyDetails2.setType(1); + userMoneyDetails2.setState(2); + userMoneyDetails2.setMoney(BigDecimal.valueOf(money)); + userMoneyDetails2.setCreateTime(sdf.format(new Date())); + userMoneyDetails2.setBlRole(2); + userMoneyDetails2.setBlFlag(1); + userMoneyDetailsService.save(userMoneyDetails); + }else if(payDetails.getType()==7){ + //服务包下单,分单 + UserPackageOrder orders = userPackageOrderDao.getByNo(out_trade_no); + UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); + userMoneyDetails.setManipulateType(1); + userMoneyDetails.setUserId(orders.getUserId()); + userMoneyDetails.setMoney(orders.getPayMoney()); + userMoneyDetails.setContent("订单号:" + orders.getOrdersNo() + ",已经下单成功!"); + userMoneyDetails.setTitle("支付服务包订单"); + userMoneyDetails.setType(2); + userMoneyDetails.setState(2); + userMoneyDetails.setCreateTime(sdf.format(new Date())); + userMoneyDetails.setBlRole(1); + userMoneyDetails.setBlFlag(1); userMoneyDetailsService.save(userMoneyDetails); + orders.setStatus(2); + orders.setPayWay(payDetails.getClassify()); + orders.setPayTime(sdf.format(new Date())); + userPackageOrderDao.updateStatus(orders); + + //获取订单-服务包映射关系列表 + List mappingList = userPackageOrdersMappingService.findListByOrdersId(orders.getOrdersId()); + for (UserPackageOrdersMapping ordersPackage : mappingList) { + int quantity = ordersPackage.getNum(); + MassagePackage massagePackage = massagePackageService.getById(ordersPackage.getPackageId()); + //修改服务包销量 + int sales = massagePackage.getSales(); + sales = sales+quantity; + massagePackage.setSales(sales); + massagePackageService.updateSales(massagePackage); + for(int i=0;i userPackageDetailList = userPackageDetailService.findMassagePackageDetails(userPackageDetail); + if(userPackageDetailList.size()>0){ + for(int j=0;j - + + update user_money + set money=#{money} + where user_id=#{userId} + \ No newline at end of file diff --git a/src/main/resources/mapper/app/UserMoneyDetailsDao.xml b/src/main/resources/mapper/app/UserMoneyDetailsDao.xml index 2ab62b0..1432eae 100644 --- a/src/main/resources/mapper/app/UserMoneyDetailsDao.xml +++ b/src/main/resources/mapper/app/UserMoneyDetailsDao.xml @@ -19,4 +19,96 @@ + + insert into user_money_details + + + user_id, + + + by_user_id, + + + title, + + + classify, + + + type, + + + state, + + + money, + + + content, + + + create_time, + + + artificer_id, + + + manipulate_type, + + + balance, + + + bl_role, + + + bl_flag + + + + + #{userId}, + + + #{byUserId}, + + + #{title}, + + + #{classify}, + + + #{type}, + + + #{state}, + + + #{money}, + + + #{content}, + + + #{createTime}, + + + #{artificerId}, + + + #{manipulateType}, + + + #{balance}, + + + #{blRole}, + + + #{blFlag} + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/bl/order/UserPackageOrderDao.xml b/src/main/resources/mapper/bl/order/UserPackageOrderDao.xml index 6f81d1c..cb3c01f 100644 --- a/src/main/resources/mapper/bl/order/UserPackageOrderDao.xml +++ b/src/main/resources/mapper/bl/order/UserPackageOrderDao.xml @@ -9,12 +9,7 @@ a.orders_no, a.user_id, b.user_name, - a.package_id, - a.package_name, - a.type, a.vip_rate, - a.price, - a.quantity, a.old_sum_money, a.sum_money, a.pay_money, @@ -25,24 +20,65 @@ a.coupon_count, a.coupon_money, a.refund_time, - a.refund_money + a.refund_money, + a.create_time from bl_user_package_order a left join tb_user b on a.user_id = b.user_id where 1=1 and a.status=#{params.status} - - and a.type=#{params.type} - and a.orders_no like concat('%',#{params.ordersNo},'%') - - and a.package_name like concat('%',#{params.packageName},'%') - order by a.orders_id desc + + + + + select * from bl_user_package_order where now()>= DATE_ADD( create_time, INTERVAL #{time} MINUTE ) and status=0 + + + update bl_user_package_order + set + pay_way = #{payWay}, + status = #{status}, + pay_time = #{payTime} + where orders_id = #{ordersId} + \ No newline at end of file diff --git a/src/main/resources/mapper/bl/order/UserPackageOrdersMappingDao.xml b/src/main/resources/mapper/bl/order/UserPackageOrdersMappingDao.xml new file mode 100644 index 0000000..7e65902 --- /dev/null +++ b/src/main/resources/mapper/bl/order/UserPackageOrdersMappingDao.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + INSERT INTO bl_user_package_order_mapping( + orders_id, + package_id, + num + )values( + #{ordersId}, + #{packageId}, + #{num} + ) + + + \ No newline at end of file