服务包订单下单,支付:微信,支付宝,钱包,记录支付流水

This commit is contained in:
曹磊 2024-06-12 15:37:41 +08:00
parent 53a236ab8f
commit 878e111867
29 changed files with 1096 additions and 205 deletions

View File

@ -14,4 +14,5 @@ public interface UserMoneyDao extends BaseMapper<UserMoney> {
void updateCashDeposit(@Param("type") Integer type, @Param("userId") Long userId,@Param("cashDeposit") Double cashDeposit);
void updateMoney(UserMoney userMoney);
}

View File

@ -13,4 +13,5 @@ public interface UserMoneyDetailsDao extends BaseMapper<UserMoneyDetails> {
BigDecimal selectSumRefund(Long userId,String startTime,String endTime);
int insert(UserMoneyDetails userMoneyDetails);
}

View File

@ -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;
}

View File

@ -23,4 +23,6 @@ public interface UserMoneyDetailsService extends IService<UserMoneyDetails> {
List<UserMoneyDetails> selectIncome(Period period);
int insert(UserMoneyDetails userMoneyDetails);
}

View File

@ -19,6 +19,8 @@ public interface UserMoneyService extends IService<UserMoney> {
void updateMoney(int i, Long userId, double money);
void updateMoney(UserMoney userMoney);
Double selectMyProfit(Long userId);
PageUtils balanceDetailed(@RequestAttribute Long userId, Page<UserMoneyDetails> ipage);

View File

@ -352,4 +352,16 @@ public class UserMoneyDetailsServiceImpl extends ServiceImpl<UserMoneyDetailsDao
List<UserMoneyDetails> 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);
}
}

View File

@ -104,6 +104,11 @@ public class UserMoneyServiceImpl extends ServiceImpl<UserMoneyDao, UserMoney> 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<UserMoney>().eq("user_id", userId));

View File

@ -1486,11 +1486,13 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> 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()));

View File

@ -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")

View File

@ -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")

View File

@ -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);
}
}

View File

@ -14,6 +14,10 @@ public interface UserPackageOrderDao extends BaseMapper<UserPackageOrder> {
IPage<UserPackageOrder> findPage(Page<UserPackageOrder> page, @Param("params") UserPackageOrder userPackageOrder);
UserPackageOrder getById(Long ordersId);
UserPackageOrder getByNo(String ordersNo);
List<UserPackageOrder> findCoupon(UserPackageOrder userPackageOrder);
int refund(UserPackageOrder userPackageOrder);
@ -22,4 +26,8 @@ public interface UserPackageOrderDao extends BaseMapper<UserPackageOrder> {
int insertCoupon(UserPackageOrder userPackageOrder);
List<UserPackageOrder> selectOrdersStatusByTime(String time);
int updateStatus(UserPackageOrder userPackageOrder);
}

View File

@ -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<UserPackageOrdersMapping> {
List<UserPackageOrdersMapping> findList(UserPackageOrdersMapping userPackageOrdersMapping);
List<UserPackageOrdersMapping> findListByOrdersId(Long ordersId);
int insert(UserPackageOrdersMapping userPackageOrdersMapping);
}

View File

@ -11,6 +11,7 @@ import java.math.BigDecimal;
/**
* @description bl_user_package
* 用户-服务包表
* @author caolei
* @date 2024-6-8
*/

View File

@ -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
*/

View File

@ -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<UserPackageOrdersMapping> ordersPackageList;
public UserPackageOrder() {}
}

View File

@ -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() {}
}

View File

@ -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<UserPackageOrder> {
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);
}

View File

@ -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<UserPackageOrdersMapping> {
List<UserPackageOrdersMapping> findList(UserPackageOrdersMapping userPackageOrdersMapping);
List<UserPackageOrdersMapping> findListByOrdersId(Long ordersId);
int insert(UserPackageOrdersMapping userPackageOrdersMapping);
}

View File

@ -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<UserPackageOrderDao, UserPackageOrder> implements UserPackageOrderService {
@ -51,6 +60,20 @@ public class UserPackageOrderServiceImpl extends ServiceImpl<UserPackageOrderDao
@Autowired
UserPackageDetailService userPackageDetailService;
@Autowired
UserMoneyDetailsService userMoneyDetailsService;
@Autowired
UserMoneyService userMoneyService;
@Autowired
UserPackageOrdersMappingService userPackageOrdersMappingService;
@Autowired
private CommonInfoService commonInfoService;
private ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteLock(true);
@Override
public Result findPage(UserPackageOrder userPackageOrder){
Page<UserPackageOrder> pages=new Page<>(userPackageOrder.getPage(),userPackageOrder.getLimit());
@ -63,25 +86,70 @@ public class UserPackageOrderServiceImpl extends ServiceImpl<UserPackageOrderDao
}
@Override
public int refund(UserPackageOrder userPackageOrder){
public void refund(UserPackageOrder userPackageOrder){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
BigDecimal refundMoney = userPackageOrder.getRefundMoney();
//获取钱包余额
UserMoney userMoney = userMoneyService.selectUserMoneyByUserId(userPackageOrder.getUserId());
BigDecimal money = userMoney.getMoney();
money = money.add(refundMoney);
userMoney.setMoney(money);
//修改钱包流水明细
UserMoneyDetails userMoneyDetails = new UserMoneyDetails();
userMoneyDetails.setUserId(userPackageOrder.getUserId());
userMoneyDetails.setTitle("订单退款");
userMoneyDetails.setType(1);
userMoneyDetails.setState(1);
userMoneyDetails.setMoney(refundMoney);
userMoneyDetails.setContent("订单号:"+userPackageOrder.getOrdersNo()+",已退款到钱包!");
userMoneyDetails.setCreateTime(sdf.format(new Date()));
userMoneyDetails.setManipulateType(1);
userMoneyDetails.setBalance(money);
userMoneyDetails.setBlRole(1);
userMoneyDetails.setBlFlag(1);
userMoneyDetailsService.insert(userMoneyDetails);
//修改钱包主表
userMoneyService.updateMoney(userMoney);
//修改订单表
userPackageOrder.setRefundTime(sdf.format(new Date()));
return baseMapper.refund(userPackageOrder);
baseMapper.refund(userPackageOrder);
}
@Override
public void buy(UserPackageOrder userPackageOrder){
String ordersNo = userPackageOrder.getOrdersNo();
Long packageId = userPackageOrder.getPackageId();
Long userId = userPackageOrder.getUserId();
int quantity = userPackageOrder.getQuantity();
BigDecimal payMoney = userPackageOrder.getPayMoney();
public Result insertOrders(UserPackageOrder userPackageOrder){
reentrantReadWriteLock.writeLock().lock();
try {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
List<CouponUser> CouponUserList = Lists.newArrayList();
String couponIds = userPackageOrder.getCouponId();
if(couponIds.length()>0){
String[] couponArr = couponIds.trim().split(",");
BigDecimal couponMoney = new BigDecimal(0);
int count = 0;
for(int i=0;i<couponArr.length;i++){
if(couponArr[i]!=null && !couponArr[i].equals("")){
Long couponId = Long.valueOf(couponArr[i]);
CouponUser couponUser = couponUserService.getById(couponId);
if (!couponUser.getStatus().equals(0)) {
return Result.error("优惠券已被使用!");
}
CouponUserList.add(couponUser);
BigDecimal money= couponUser.getMoney();
couponMoney = couponMoney.add(money);
count++;
}
}
userPackageOrder.setCouponCount(count);
userPackageOrder.setCouponMoney(couponMoney);
}else{
userPackageOrder.setCouponCount(0);
userPackageOrder.setCouponMoney(BigDecimal.ZERO);
}
if(userPackageOrder.getVipRate() == null || BigDecimal.ZERO.compareTo(userPackageOrder.getVipRate()) == 0){
//获取用户VIP的优惠信息
BigDecimal vipRate = new BigDecimal(100);
UserVip userVip = userVipService.selectUserVipByUserId(userId);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
UserVip userVip = userVipService.selectUserVipByUserId(userPackageOrder.getUserId());
if (userVip != null) {
if(userVip.getIsVip() == 1){
//获取用户到期时间
@ -100,50 +168,24 @@ public class UserPackageOrderServiceImpl extends ServiceImpl<UserPackageOrderDao
}
}
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));
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);
List<CouponUser> CouponUserList = Lists.newArrayList();
if(payMoney != null && payMoney.compareTo(new BigDecimal(0)) > 0){
//不做处理
}else{
//获取代金券计算
if(couponIds.length()>0){
String[] couponArr = couponIds.trim().split(",");
BigDecimal couponMoney = new BigDecimal(0);
int count = 0;
for(int i=0;i<couponArr.length;i++){
if(couponArr[i]!=null && !couponArr[i].equals("")){
Long couponId = Long.valueOf(couponArr[i]);
CouponUser couponUser = couponUserService.getById(couponId);
CouponUserList.add(couponUser);
BigDecimal money= couponUser.getMoney();
couponMoney = couponMoney.add(money);
count++;
}
}
userPackageOrder.setCouponCount(count);
userPackageOrder.setCouponMoney(couponMoney);
payMoney = sumMoney.subtract(couponMoney);
}else{
payMoney = 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);
}
userPackageOrder.setPayTime(simpleDateFormat.format(new Date()));
userPackageOrder.setStatus(1);
//插入订单表
baseMapper.insert(userPackageOrder);
baseMapper.insertOrders(userPackageOrder);
Long ordersId = userPackageOrder.getOrdersId();
//插入订单代金券表
if(CouponUserList.size()>0){
for(int i=0;i<CouponUserList.size();i++){
@ -159,13 +201,83 @@ public class UserPackageOrderServiceImpl extends ServiceImpl<UserPackageOrderDao
}
}
//插入用户-服务包-订单-服务包与订单映射关系表
List<UserPackageOrdersMapping> 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<UserPackageOrdersMapping> 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<quantity;i++){
//拆分插入用户服务包
UserPackage userPackage = new UserPackage();
userPackage.setUserId(userId);
userPackage.setUserId(orders.getUserId());
userPackage.setPackageId(massagePackage.getId());
userPackage.setOrdersId(ordersId);
userPackage.setOrdersNo(ordersNo);
userPackage.setOrdersNo(orders.getOrdersNo());
userPackage.setCreateTime(simpleDateFormat.format(new Date()));
userPackage.setTitle(massagePackage.getTitle());
userPackage.setType(massagePackage.getType());
@ -180,7 +292,7 @@ public class UserPackageOrderServiceImpl extends ServiceImpl<UserPackageOrderDao
Long mainId = userPackage.getId();
//拆分插入用户服务器项目详情
UserPackageDetail userPackageDetail = new UserPackageDetail();
userPackageDetail.setMainId(packageId);
userPackageDetail.setMainId(ordersPackage.getPackageId());
List<UserPackageDetail> userPackageDetailList = userPackageDetailService.findMassagePackageDetails(userPackageDetail);
if(userPackageDetailList.size()>0){
for(int j=0;j<userPackageDetailList.size();j++){
@ -194,12 +306,53 @@ public class UserPackageOrderServiceImpl extends ServiceImpl<UserPackageOrderDao
}
}
}
//修改服务包销量
int sales = massagePackage.getSales();
sales = sales+quantity;
massagePackage.setSales(sales);
massagePackageService.updateSales(massagePackage);
}
} catch (Exception e) {
e.printStackTrace();
log.error("钱包支付服务包订单异常:" + e.getMessage(), e);
}
return Result.success();
}
/**
* 每5分钟自动扫描未支付订单进行取消释放代金券
*/
// @Scheduled(cron = "0 0/5 * * * ?")
public void autoCancelOrders() {
String value1 = commonInfoService.findOne(388).getValue();
List<UserPackageOrder> 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<couponArr.length;i++){
if(couponArr[i]!=null && !couponArr[i].equals("")){
Long couponId = Long.valueOf(couponArr[i]);
CouponUser couponUser = couponUserService.getById(couponId);
if (couponUser != null && couponUser.getStatus().equals(1)) {
couponUser.setStatus(0);
couponUserService.updateById(couponUser);
}
}
}
}
}
}
}
public String getGeneralOrder() {
Date date = new Date();
String newString = String.format("%0" + 4 + "d", (int) ((Math.random() * 9 + 1) * 1000));
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String format = sdf.format(date);
return format + newString;
}
}

View File

@ -0,0 +1,30 @@
package com.sqx.modules.bl.order.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.sqx.modules.bl.order.dao.UserPackageOrdersMappingDao;
import com.sqx.modules.bl.order.entity.UserPackageOrdersMapping;
import com.sqx.modules.bl.order.service.UserPackageOrdersMappingService;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserPackageOrdersMappingServiceImpl extends ServiceImpl<UserPackageOrdersMappingDao, UserPackageOrdersMapping> implements UserPackageOrdersMappingService {
@Override
public List<UserPackageOrdersMapping> findList(UserPackageOrdersMapping userPackageOrdersMapping){
return baseMapper.findList(userPackageOrdersMapping);
}
@Override
public List<UserPackageOrdersMapping> findListByOrdersId(Long ordersId){
return baseMapper.findListByOrdersId(ordersId);
}
@Override
public int insert(UserPackageOrdersMapping userPackageOrdersMapping){
return baseMapper.insert(userPackageOrdersMapping);
}
}

View File

@ -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<UserPackageOrdersMapping> 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<quantity;i++){
//拆分插入用户服务包
UserPackage userPackage = new UserPackage();
userPackage.setUserId(orders.getUserId());
userPackage.setPackageId(massagePackage.getId());
userPackage.setOrdersId(orders.getOrdersId());
userPackage.setOrdersNo(orders.getOrdersNo());
userPackage.setCreateTime(sdf.format(new Date()));
userPackage.setTitle(massagePackage.getTitle());
userPackage.setType(massagePackage.getType());
userPackage.setOldPrice(massagePackage.getOldPrice());
userPackage.setPrice(massagePackage.getPrice());
userPackage.setPackageImg(massagePackage.getPackageImg());
userPackage.setContent(massagePackage.getContent());
userPackage.setContentImg(massagePackage.getContentImg());
userPackage.setLabels(massagePackage.getLabels());
userPackage.setCity(massagePackage.getCity());
userPackageService.insert(userPackage);
Long mainId = userPackage.getId();
//拆分插入用户服务器项目详情
UserPackageDetail userPackageDetail = new UserPackageDetail();
userPackageDetail.setMainId(ordersPackage.getPackageId());
List<UserPackageDetail> userPackageDetailList = userPackageDetailService.findMassagePackageDetails(userPackageDetail);
if(userPackageDetailList.size()>0){
for(int j=0;j<userPackageDetailList.size();j++){
UserPackageDetail upd = userPackageDetailList.get(j);
upd.setMainId(mainId);
upd.setCreateTime(sdf.format(new Date()));
int serviceCount = upd.getServiceCount();
for(int k=0;k<serviceCount;k++){
userPackageDetailService.insert(upd);
}
}
}
}
}
}
}
}
@ -650,6 +801,49 @@ public class AliPayController {
}
}
@Login
@ApiOperation("支付宝支付订单")
@RequestMapping(value = "/payPackageOrder", method = RequestMethod.POST)
@Transactional(rollbackFor = Exception.class)
public Result payPackageOrder(Long ordersId, Integer type) {
UserPackageOrder orders = userPackageOrderDao.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("订单支付超时,请发起支付!");
}
//通知页面地址
CommonInfo one = commonInfoService.findOne(19);
String returnUrl = one.getValue() + "/#/pages/task/recharge";
CommonInfo one3 = commonInfoService.findOne(12);
String name = one3.getValue();
PayDetails payDetails1 = payDetailsDao.selectByOrderId(orders.getOrdersNo());
if(payDetails1==null){
PayDetails payDetails = new PayDetails();
payDetails.setState(0);
payDetails.setCreateTime(sdf.format(new Date()));
payDetails.setOrderId(orders.getOrdersNo());
payDetails.setUserId(orders.getUserId());
payDetails.setMoney(orders.getPayMoney().doubleValue());
payDetails.setClassify(6);
payDetails.setType(7);
payDetailsDao.insert(payDetails);
}else{
payDetails1.setClassify(6);
payDetails1.setType(7);
payDetailsDao.updateById(payDetails1);
}
if (type == 1) {
return payApp(name, orders.getOrdersNo(), orders.getPayMoney().doubleValue());
} else {
return payH5(name, orders.getOrdersNo(), orders.getPayMoney().doubleValue(), returnUrl);
}
}
@Login
@ApiOperation("支付宝支付订单")

View File

@ -49,6 +49,13 @@ public class ApiWeiXinPayController {
return wxService.payOrder(ordersId,type,request);
}
@Login
@ApiOperation("微信app支付套餐订单")
@PostMapping("/payPackageOrder")
public Result payPackageOrder(Long ordersId,Integer type,HttpServletRequest request) throws Exception {
return wxService.payPackageOrder(ordersId,type,request);
}
@Login
@ApiOperation("缴纳保证金")

View File

@ -18,8 +18,12 @@ public interface WxService {
Result payOrder(Long id, Integer type,HttpServletRequest request) throws Exception;
Result payPackageOrder(Long id, Integer classify,HttpServletRequest request) throws Exception;
Result payCoupon(Long userId, Integer type, Long couponIssueId,HttpServletRequest request) throws Exception;
Result pay(Double moneys, Integer type, Long userId, String outTradeNo,HttpServletRequest request) throws Exception;
String payBack(String resXml,Integer type);
String payBacks(String resXml, Integer type);

View File

@ -12,15 +12,22 @@ 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.dao.RealNameDao;
import com.sqx.modules.artificer.dao.UserRechargeDao;
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;
@ -74,6 +81,8 @@ public class WxServiceImpl implements WxService {
@Autowired
private UserMoneyDao userMoneyDao;
@Autowired
private UserMoneyService userMoneyService;
@Autowired
private UserMoneyDetailsService userMoneyDetailsService;
@Autowired
private OrdersService ordersService;
@ -109,6 +118,16 @@ public class WxServiceImpl implements WxService {
private ArtificerTimeService artificerTimeService;
@Autowired
private UserRechargeDao userRechargeDao;
@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");
@ -146,7 +165,6 @@ public class WxServiceImpl implements WxService {
return pay(payClassify.getPrice().doubleValue(), classify, userId, generalOrder,request);
}
@Override
public Result payOrder(Long id, Integer classify,HttpServletRequest request) throws Exception {
Orders orders = ordersService.getById(id);
@ -219,7 +237,38 @@ public class WxServiceImpl implements WxService {
payDetails1.setClassify(classify);
payDetailsDao.updateById(payDetails1);
}
return pay(orders.getPayMoney().doubleValue(), classify, orders.getUserId(), orders.getOrdersNo(),request);
}
@Override
public Result payPackageOrder(Long id, Integer classify,HttpServletRequest request) throws Exception {
UserPackageOrder orders = userPackageOrderDao.getById(id);
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("订单支付超时,请发起支付!");
}
PayDetails payDetails1 = payDetailsDao.selectByOrderId(orders.getOrdersNo());
if(payDetails1==null){
PayDetails payDetails = new PayDetails();
payDetails.setState(0);
payDetails.setCreateTime(sdf.format(new Date()));
payDetails.setOrderId(orders.getOrdersNo());
payDetails.setUserId(orders.getUserId());
payDetails.setMoney(orders.getPayMoney().doubleValue());
payDetails.setClassify(classify);
payDetails.setType(7);
payDetailsDao.insert(payDetails);
}else{
payDetails1.setClassify(classify);
payDetails1.setType(7);
payDetailsDao.updateById(payDetails1);
}
return pay(orders.getPayMoney().doubleValue(), classify, orders.getUserId(), orders.getOrdersNo(),request);
}
@ -324,7 +373,8 @@ public class WxServiceImpl implements WxService {
* @return
* @throws Exception
*/
private Result pay(Double moneys, Integer type, Long userId, String outTradeNo,HttpServletRequest request) throws Exception {
@Override
public Result pay(Double moneys, Integer type, Long userId, String outTradeNo,HttpServletRequest request) throws Exception {
//h5服务域名配置
CommonInfo oneu = commonInfoService.findOne(19);
String url;
@ -761,6 +811,7 @@ public class WxServiceImpl implements WxService {
ordersDao.updateById(orders1);
}else{
MessageInfo messageInfo=new MessageInfo();
messageInfo.setState("16");
@ -771,6 +822,20 @@ public class WxServiceImpl implements WxService {
}
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();
@ -784,23 +849,41 @@ public class WxServiceImpl implements WxService {
userMoneyDetails.setUserId(userId);
userMoneyDetails.setTitle("缴纳保证金");
userMoneyDetails.setContent("已缴纳保证金:"+cashDeposit+"");
userMoneyDetails.setType(1);
// userMoneyDetails.setType(1);
userMoneyDetails.setManipulateType(1);
userMoneyDetails.setType(2);
userMoneyDetails.setMoney(BigDecimal.valueOf(cashDeposit));
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);
if(payClassify.getCouponId()!=null && payClassify.getGiveNum()>0){
@ -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<UserPackageOrdersMapping> 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<quantity;i++){
//拆分插入用户服务包
UserPackage userPackage = new UserPackage();
userPackage.setUserId(orders.getUserId());
userPackage.setPackageId(massagePackage.getId());
userPackage.setOrdersId(orders.getOrdersId());
userPackage.setOrdersNo(orders.getOrdersNo());
userPackage.setCreateTime(sdf.format(new Date()));
userPackage.setTitle(massagePackage.getTitle());
userPackage.setType(massagePackage.getType());
userPackage.setOldPrice(massagePackage.getOldPrice());
userPackage.setPrice(massagePackage.getPrice());
userPackage.setPackageImg(massagePackage.getPackageImg());
userPackage.setContent(massagePackage.getContent());
userPackage.setContentImg(massagePackage.getContentImg());
userPackage.setLabels(massagePackage.getLabels());
userPackage.setCity(massagePackage.getCity());
userPackageService.insert(userPackage);
Long mainId = userPackage.getId();
//拆分插入用户服务器项目详情
UserPackageDetail userPackageDetail = new UserPackageDetail();
userPackageDetail.setMainId(ordersPackage.getPackageId());
List<UserPackageDetail> userPackageDetailList = userPackageDetailService.findMassagePackageDetails(userPackageDetail);
if(userPackageDetailList.size()>0){
for(int j=0;j<userPackageDetailList.size();j++){
UserPackageDetail upd = userPackageDetailList.get(j);
upd.setMainId(mainId);
upd.setCreateTime(sdf.format(new Date()));
int serviceCount = upd.getServiceCount();
for(int k=0;k<serviceCount;k++){
userPackageDetailService.insert(upd);
}
}
}
}
}
}
}
System.err.println("微信手机支付回调成功订单号:" + out_trade_no + "");

View File

@ -25,6 +25,10 @@
where user_id=#{userId}
</update>
<update id="updateMoney">
update user_money
set money=#{money}
where user_id=#{userId}
</update>
</mapper>

View File

@ -19,4 +19,96 @@
</if>
</select>
<insert id="insert">
insert into user_money_details
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="null != userId ">
user_id,
</if>
<if test="null != byUserId ">
by_user_id,
</if>
<if test="null != title and '' != title ">
title,
</if>
<if test="null != classify ">
classify,
</if>
<if test="null != type ">
type,
</if>
<if test="null != state ">
state,
</if>
<if test="null != money ">
money,
</if>
<if test="null != content and '' != content ">
content,
</if>
<if test="null != createTime and '' != createTime ">
create_time,
</if>
<if test="null != artificerId ">
artificer_id,
</if>
<if test="null != manipulateType ">
manipulate_type,
</if>
<if test="null != balance ">
balance,
</if>
<if test="null != blRole ">
bl_role,
</if>
<if test="null != blFlag ">
bl_flag
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="null != userId ">
#{userId},
</if>
<if test="null != byUserId ">
#{byUserId},
</if>
<if test="null != title and '' != title ">
#{title},
</if>
<if test="null != classify ">
#{classify},
</if>
<if test="null != type ">
#{type},
</if>
<if test="null != state ">
#{state},
</if>
<if test="null != money ">
#{money},
</if>
<if test="null != content and '' != content ">
#{content},
</if>
<if test="null != createTime and '' != createTime ">
#{createTime},
</if>
<if test="null != artificerId ">
#{artificerId},
</if>
<if test="null != manipulateType ">
#{manipulateType},
</if>
<if test="null != balance ">
#{balance},
</if>
<if test="null != blRole ">
#{blRole},
</if>
<if test="null != blFlag ">
#{blFlag}
</if>
</trim>
</insert>
</mapper>

View File

@ -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
<if test="params.status!=null and params.status!=0">
and a.status=#{params.status}
</if>
<if test="params.type!=null and params.type!=''">
and a.type=#{params.type}
</if>
<if test="params.ordersNo!=null and params.ordersNo!=''">
and a.orders_no like concat('%',#{params.ordersNo},'%')
</if>
<if test="params.packageName!=null and params.packageName!=''">
and a.package_name like concat('%',#{params.packageName},'%')
</if>
order by a.orders_id desc
</select>
<select id="getById" resultType="com.sqx.modules.bl.order.entity.UserPackageOrder">
select
a.orders_id,
a.orders_no,
a.user_id,
b.user_name,
a.vip_rate,
a.old_sum_money,
a.sum_money,
a.pay_money,
a.pay_time,
a.pay_way,
a.status,
a.coupon_id,
a.coupon_count,
a.coupon_money,
a.refund_time,
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 a.orders_id = #{ordersId}
</select>
<select id="getByNo" resultType="com.sqx.modules.bl.order.entity.UserPackageOrder">
select
a.orders_id,
a.orders_no,
a.user_id,
b.user_name,
a.vip_rate,
a.old_sum_money,
a.sum_money,
a.pay_money,
a.pay_time,
a.pay_way,
a.status,
a.coupon_id,
a.coupon_count,
a.coupon_money,
a.refund_time,
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 a.orders_no = #{ordersNo}
</select>
<select id="findCoupon" resultType="com.sqx.modules.bl.order.entity.UserPackageOrder">
select
coupon_name,
@ -70,24 +106,9 @@
<if test="null != userId ">
user_id,
</if>
<if test="null != packageId ">
package_id,
</if>
<if test="null != packageName and '' != packageName ">
package_name,
</if>
<if test="null != type ">
type,
</if>
<if test="null != vipRate ">
vip_rate,
</if>
<if test="null != price ">
price,
</if>
<if test="null != quantity ">
quantity,
</if>
<if test="null != oldSumMoney ">
old_sum_money,
</if>
@ -113,7 +134,10 @@
coupon_count,
</if>
<if test="null != couponMoney ">
coupon_money
coupon_money,
</if>
<if test="null != createTime and '' != createTime">
create_time
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
@ -123,24 +147,9 @@
<if test="null != userId ">
#{userId},
</if>
<if test="null != packageId ">
#{packageId},
</if>
<if test="null != packageName and '' != packageName ">
#{packageName},
</if>
<if test="null != type ">
#{type},
</if>
<if test="null != vipRate ">
#{vipRate},
</if>
<if test="null != price ">
#{price},
</if>
<if test="null != quantity ">
#{quantity},
</if>
<if test="null != oldSumMoney ">
#{oldSumMoney},
</if>
@ -166,7 +175,10 @@
#{couponCount},
</if>
<if test="null != couponMoney ">
#{couponMoney}
#{couponMoney},
</if>
<if test="null != createTime and '' != createTime">
#{createTime}
</if>
</trim>
</insert>
@ -176,6 +188,17 @@
values(#{ordersId},#{userCouponId},#{couponName},#{couponMoney})
</insert>
<select id="selectOrdersStatusByTime" resultType="com.sqx.modules.bl.order.entity.UserPackageOrder">
select * from bl_user_package_order where now()>= DATE_ADD( create_time, INTERVAL #{time} MINUTE ) and status=0
</select>
<update id="updateStatus">
update bl_user_package_order
set
pay_way = #{payWay},
status = #{status},
pay_time = #{payTime}
where orders_id = #{ordersId}
</update>
</mapper>

View File

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.sqx.modules.bl.order.dao.UserPackageOrdersMappingDao">
<select id="findList" resultType="com.sqx.modules.bl.order.entity.UserPackageOrdersMapping">
select
mapping_id,
orders_id,
package_id,
num
from bl_user_package_order_mapping
where 1=1
<if test="ordersId!=null and ordersId!=0">
and orders_id=#{ordersId}
</if>
<if test="packageId!=null and packageId!=''">
and package_id=#{packageId}
</if>
order by mapping_id
</select>
<select id="findListByOrdersId" resultType="com.sqx.modules.bl.order.entity.UserPackageOrdersMapping">
select
mapping_id,
orders_id,
package_id,
num
from bl_user_package_order_mapping
where orders_id=#{ordersId}
order by mapping_id
</select>
<insert id="insert" parameterType="com.sqx.modules.bl.order.entity.UserPackageOrdersMapping">
INSERT INTO bl_user_package_order_mapping(
orders_id,
package_id,
num
)values(
#{ordersId},
#{packageId},
#{num}
)
</insert>
</mapper>