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

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 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); BigDecimal selectSumRefund(Long userId,String startTime,String endTime);
int insert(UserMoneyDetails userMoneyDetails);
} }

View File

@ -78,6 +78,7 @@ public class UserMoneyDetails implements Serializable {
*/ */
@ApiModelProperty("余额") @ApiModelProperty("余额")
private BigDecimal balance; private BigDecimal balance;
/** /**
* 是否操作余额1未操作余额 2操作余额 * 是否操作余额1未操作余额 2操作余额
*/ */
@ -86,4 +87,16 @@ public class UserMoneyDetails implements Serializable {
//技师id //技师id
private Long artificerId; 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); 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(int i, Long userId, double money);
void updateMoney(UserMoney userMoney);
Double selectMyProfit(Long userId); Double selectMyProfit(Long userId);
PageUtils balanceDetailed(@RequestAttribute Long userId, Page<UserMoneyDetails> ipage); 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); List<UserMoneyDetails> page2 = baseMapper.selectList(queryWrapper);
return page2; 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); baseMapper.updateMayMoney(i, userId, money);
} }
@Override
public void updateMoney(UserMoney userMoney){
baseMapper.updateMoney(userMoney);
}
@Override @Override
public UserMoney selectUserMoneyByUserId(Long userId) { public UserMoney selectUserMoneyByUserId(Long userId) {
UserMoney userMoney = baseMapper.selectOne(new QueryWrapper<UserMoney>().eq("user_id", 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.setContent("订单号:" + orders.getOrdersNo() + ",已经下单成功!");
userMoneyDetails.setTitle("支付订单"); userMoneyDetails.setTitle("支付订单");
userMoneyDetails.setType(2); userMoneyDetails.setType(2);
userMoneyDetails.setState(2);
userMoneyDetails.setCreateTime(simpleDateFormat.format(new Date())); userMoneyDetails.setCreateTime(simpleDateFormat.format(new Date()));
userMoneyDetails.setBlRole(1);
userMoneyDetails.setBlFlag(1);
userMoneyDetailsService.save(userMoneyDetails); userMoneyDetailsService.save(userMoneyDetails);
} }
orders.setStatus(2); orders.setStatus(2);
orders.setPayWay(5); orders.setPayWay(5);
orders.setPayTime(simpleDateFormat.format(new Date())); orders.setPayTime(simpleDateFormat.format(new Date()));

View File

@ -11,8 +11,9 @@ import java.math.BigDecimal;
/** /**
* @description massage_package * @description massage_package
* 服务包-服务套餐项目次卡服务疗程
* @author caolei * @author caolei
* @date 2024-6-5 * @date 2024-06-05
*/ */
@Data @Data
@TableName("bl_massage_package") @TableName("bl_massage_package")

View File

@ -11,8 +11,9 @@ import java.math.BigDecimal;
/** /**
* @description bl_massage_package_detail * @description bl_massage_package_detail
* 服务包-明细表
* @author caolei * @author caolei
* @date 2024-6-5 * @date 2024-06-05
*/ */
@Data @Data
@TableName("bl_massage_package_detail") @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); IPage<UserPackageOrder> findPage(Page<UserPackageOrder> page, @Param("params") UserPackageOrder userPackageOrder);
UserPackageOrder getById(Long ordersId);
UserPackageOrder getByNo(String ordersNo);
List<UserPackageOrder> findCoupon(UserPackageOrder userPackageOrder); List<UserPackageOrder> findCoupon(UserPackageOrder userPackageOrder);
int refund(UserPackageOrder userPackageOrder); int refund(UserPackageOrder userPackageOrder);
@ -22,4 +26,8 @@ public interface UserPackageOrderDao extends BaseMapper<UserPackageOrder> {
int insertCoupon(UserPackageOrder 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 * @description bl_user_package
* 用户-服务包表
* @author caolei * @author caolei
* @date 2024-6-8 * @date 2024-6-8
*/ */

View File

@ -10,7 +10,8 @@ import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
/** /**
* @description bl_user_package_order * @description bl_user_package_detail
* 用户-服务包-明细表
* @author caolei * @author caolei
* @date 2024-6-8 * @date 2024-6-8
*/ */

View File

@ -8,9 +8,11 @@ import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
/** /**
* @description bl_user_package_order * @description bl_user_package_order
* 用户-服务包-订单-主表
* @author caolei * @author caolei
* @date 2024-6-8 * @date 2024-6-8
*/ */
@ -43,36 +45,11 @@ public class UserPackageOrder implements Serializable {
@TableField(exist = false) @TableField(exist = false)
private String userName; private String userName;
/**
* 服务包id
*/
private Long packageId;
/**
* 服务包名称
*/
private String packageName;
/**
* 服务包类型
*/
private Integer type;
/** /**
* 会员优惠比例 * 会员优惠比例
*/ */
private BigDecimal vipRate; private BigDecimal vipRate;
/**
* 单价
*/
private BigDecimal price;
/**
* 数量
*/
private Integer quantity;
/** /**
* 原总金额 * 原总金额
*/ */
@ -133,6 +110,12 @@ public class UserPackageOrder implements Serializable {
*/ */
private Long userCouponId; private Long userCouponId;
/**
* 创建时间
*/
private String createTime;
/** /**
* 代金券名称 * 代金券名称
*/ */
@ -145,5 +128,8 @@ public class UserPackageOrder implements Serializable {
@TableField(exist = false) @TableField(exist = false)
private Integer limit; private Integer limit;
@TableField(exist = false)
private List<UserPackageOrdersMapping> ordersPackageList;
public UserPackageOrder() {} 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.common.utils.Result;
import com.sqx.modules.bl.order.entity.UserPackageOrder; import com.sqx.modules.bl.order.entity.UserPackageOrder;
import javax.servlet.http.HttpServletRequest;
public interface UserPackageOrderService extends IService<UserPackageOrder> { public interface UserPackageOrderService extends IService<UserPackageOrder> {
Result findPage(UserPackageOrder userPackageOrder); Result findPage(UserPackageOrder userPackageOrder);
Result findCoupon(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.PageUtils;
import com.sqx.common.utils.Result; import com.sqx.common.utils.Result;
import com.sqx.modules.app.dao.VipDetailsDao; 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.UserVip;
import com.sqx.modules.app.entity.VipDetails; 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.app.service.UserVipService;
import com.sqx.modules.bl.massage.entity.MassagePackage; import com.sqx.modules.bl.massage.entity.MassagePackage;
import com.sqx.modules.bl.massage.service.MassagePackageService; 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.UserPackage;
import com.sqx.modules.bl.order.entity.UserPackageDetail; import com.sqx.modules.bl.order.entity.UserPackageDetail;
import com.sqx.modules.bl.order.entity.UserPackageOrder; 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.UserPackageDetailService;
import com.sqx.modules.bl.order.service.UserPackageOrderService; 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.bl.order.service.UserPackageService;
import com.sqx.modules.common.service.CommonInfoService;
import com.sqx.modules.coupon.entity.CouponUser; import com.sqx.modules.coupon.entity.CouponUser;
import com.sqx.modules.coupon.service.CouponUserService; import com.sqx.modules.coupon.service.CouponUserService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.concurrent.locks.ReentrantReadWriteLock;
@Service @Service
public class UserPackageOrderServiceImpl extends ServiceImpl<UserPackageOrderDao, UserPackageOrder> implements UserPackageOrderService { public class UserPackageOrderServiceImpl extends ServiceImpl<UserPackageOrderDao, UserPackageOrder> implements UserPackageOrderService {
@ -51,6 +60,20 @@ public class UserPackageOrderServiceImpl extends ServiceImpl<UserPackageOrderDao
@Autowired @Autowired
UserPackageDetailService userPackageDetailService; UserPackageDetailService userPackageDetailService;
@Autowired
UserMoneyDetailsService userMoneyDetailsService;
@Autowired
UserMoneyService userMoneyService;
@Autowired
UserPackageOrdersMappingService userPackageOrdersMappingService;
@Autowired
private CommonInfoService commonInfoService;
private ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteLock(true);
@Override @Override
public Result findPage(UserPackageOrder userPackageOrder){ public Result findPage(UserPackageOrder userPackageOrder){
Page<UserPackageOrder> pages=new Page<>(userPackageOrder.getPage(),userPackageOrder.getLimit()); Page<UserPackageOrder> pages=new Page<>(userPackageOrder.getPage(),userPackageOrder.getLimit());
@ -63,60 +86,42 @@ public class UserPackageOrderServiceImpl extends ServiceImpl<UserPackageOrderDao
} }
@Override @Override
public int refund(UserPackageOrder userPackageOrder){ public void refund(UserPackageOrder userPackageOrder){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 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())); userPackageOrder.setRefundTime(sdf.format(new Date()));
return baseMapper.refund(userPackageOrder); baseMapper.refund(userPackageOrder);
} }
@Override @Override
public void buy(UserPackageOrder userPackageOrder){ public Result insertOrders(UserPackageOrder userPackageOrder){
String ordersNo = userPackageOrder.getOrdersNo(); reentrantReadWriteLock.writeLock().lock();
Long packageId = userPackageOrder.getPackageId(); try {
Long userId = userPackageOrder.getUserId(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
int quantity = userPackageOrder.getQuantity(); List<CouponUser> CouponUserList = Lists.newArrayList();
BigDecimal payMoney = userPackageOrder.getPayMoney(); String couponIds = userPackageOrder.getCouponId();
String couponIds = userPackageOrder.getCouponId();
//获取用户VIP的优惠信息
BigDecimal vipRate = new BigDecimal(100);
UserVip userVip = userVipService.selectUserVipByUserId(userId);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if (userVip != null) {
if(userVip.getIsVip() == 1){
//获取用户到期时间
Date date = null;
try {
date = simpleDateFormat.parse(userVip.getEndTime());
if (date.getTime() >= System.currentTimeMillis()) {
VipDetails vipDetails = vipDetailsDao.selectOne(new QueryWrapper<VipDetails>().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<CouponUser> CouponUserList = Lists.newArrayList();
if(payMoney != null && payMoney.compareTo(new BigDecimal(0)) > 0){
//不做处理
}else{
//获取代金券计算
if(couponIds.length()>0){ if(couponIds.length()>0){
String[] couponArr = couponIds.trim().split(","); String[] couponArr = couponIds.trim().split(",");
BigDecimal couponMoney = new BigDecimal(0); BigDecimal couponMoney = new BigDecimal(0);
@ -125,6 +130,9 @@ public class UserPackageOrderServiceImpl extends ServiceImpl<UserPackageOrderDao
if(couponArr[i]!=null && !couponArr[i].equals("")){ if(couponArr[i]!=null && !couponArr[i].equals("")){
Long couponId = Long.valueOf(couponArr[i]); Long couponId = Long.valueOf(couponArr[i]);
CouponUser couponUser = couponUserService.getById(couponId); CouponUser couponUser = couponUserService.getById(couponId);
if (!couponUser.getStatus().equals(0)) {
return Result.error("优惠券已被使用!");
}
CouponUserList.add(couponUser); CouponUserList.add(couponUser);
BigDecimal money= couponUser.getMoney(); BigDecimal money= couponUser.getMoney();
couponMoney = couponMoney.add(money); couponMoney = couponMoney.add(money);
@ -133,73 +141,218 @@ public class UserPackageOrderServiceImpl extends ServiceImpl<UserPackageOrderDao
} }
userPackageOrder.setCouponCount(count); userPackageOrder.setCouponCount(count);
userPackageOrder.setCouponMoney(couponMoney); userPackageOrder.setCouponMoney(couponMoney);
payMoney = sumMoney.subtract(couponMoney);
}else{ }else{
payMoney = sumMoney; userPackageOrder.setCouponCount(0);
userPackageOrder.setCouponMoney(BigDecimal.ZERO);
} }
userPackageOrder.setPayMoney(payMoney);
}
userPackageOrder.setPayTime(simpleDateFormat.format(new Date()));
userPackageOrder.setStatus(1);
//插入订单表
baseMapper.insert(userPackageOrder);
Long ordersId = userPackageOrder.getOrdersId();
//插入订单代金券表
if(CouponUserList.size()>0){
for(int i=0;i<CouponUserList.size();i++){
CouponUser couponUser = CouponUserList.get(i);
UserPackageOrder upo = new UserPackageOrder();
upo.setOrdersId(ordersId);
upo.setUserCouponId(couponUser.getId());
upo.setCouponName(couponUser.getCouponName());
upo.setCouponMoney(couponUser.getMoney());
baseMapper.insertCoupon(upo);
//更新用户代金卷表
couponUserService.update(Wrappers.<CouponUser>lambdaUpdate().eq(CouponUser::getId, couponUser.getId()).set(CouponUser::getStatus, 1));
}
}
for(int i=0;i<quantity;i++){ if(userPackageOrder.getVipRate() == null || BigDecimal.ZERO.compareTo(userPackageOrder.getVipRate()) == 0){
//拆分插入用户服务包 //获取用户VIP的优惠信息
UserPackage userPackage = new UserPackage(); BigDecimal vipRate = new BigDecimal(100);
userPackage.setUserId(userId); UserVip userVip = userVipService.selectUserVipByUserId(userPackageOrder.getUserId());
userPackage.setPackageId(massagePackage.getId()); if (userVip != null) {
userPackage.setOrdersId(ordersId); if(userVip.getIsVip() == 1){
userPackage.setOrdersNo(ordersNo); //获取用户到期时间
userPackage.setCreateTime(simpleDateFormat.format(new Date())); Date date = null;
userPackage.setTitle(massagePackage.getTitle()); try {
userPackage.setType(massagePackage.getType()); date = simpleDateFormat.parse(userVip.getEndTime());
userPackage.setOldPrice(massagePackage.getOldPrice()); if (date.getTime() >= System.currentTimeMillis()) {
userPackage.setPrice(massagePackage.getPrice()); VipDetails vipDetails = vipDetailsDao.selectOne(new QueryWrapper<VipDetails>().eq("vip_name_type", userVip.getVipNameType()));
userPackage.setPackageImg(massagePackage.getPackageImg()); if(vipDetails != null){
userPackage.setContent(massagePackage.getContent()); vipRate = vipDetails.getRate();
userPackage.setContentImg(massagePackage.getContentImg()); }
userPackage.setLabels(massagePackage.getLabels()); }
userPackage.setCity(massagePackage.getCity()); } catch (Exception e) {
userPackageService.insert(userPackage); e.getMessage();
Long mainId = userPackage.getId(); }
//拆分插入用户服务器项目详情 }
UserPackageDetail userPackageDetail = new UserPackageDetail(); }
userPackageDetail.setMainId(packageId); userPackageOrder.setVipRate(vipRate);
List<UserPackageDetail> userPackageDetailList = userPackageDetailService.findMassagePackageDetails(userPackageDetail); }
if(userPackageDetailList.size()>0){
for(int j=0;j<userPackageDetailList.size();j++){ if(userPackageOrder.getSumMoney() == null || BigDecimal.ZERO.compareTo(userPackageOrder.getSumMoney()) == 0){
UserPackageDetail upd = userPackageDetailList.get(j); BigDecimal oldSumMoney = userPackageOrder.getOldSumMoney();
upd.setMainId(mainId); BigDecimal sumMoney = oldSumMoney.multiply(userPackageOrder.getVipRate()).divide(new BigDecimal(100));
upd.setCreateTime(simpleDateFormat.format(new Date())); userPackageOrder.setSumMoney(sumMoney);
int serviceCount = upd.getServiceCount(); }
for(int k=0;k<serviceCount;k++){ userPackageOrder.setCreateTime(simpleDateFormat.format(new Date()));
userPackageDetailService.insert(upd); 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;i<CouponUserList.size();i++){
CouponUser couponUser = CouponUserList.get(i);
UserPackageOrder upo = new UserPackageOrder();
upo.setOrdersId(ordersId);
upo.setUserCouponId(couponUser.getId());
upo.setCouponName(couponUser.getCouponName());
upo.setCouponMoney(couponUser.getMoney());
baseMapper.insertCoupon(upo);
//更新用户代金卷表
couponUserService.update(Wrappers.<CouponUser>lambdaUpdate().eq(CouponUser::getId, couponUser.getId()).set(CouponUser::getStatus, 1));
}
}
//插入用户-服务包-订单-服务包与订单映射关系表
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(orders.getUserId());
userPackage.setPackageId(massagePackage.getId());
userPackage.setOrdersId(ordersId);
userPackage.setOrdersNo(orders.getOrdersNo());
userPackage.setCreateTime(simpleDateFormat.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(simpleDateFormat.format(new Date()));
int serviceCount = upd.getServiceCount();
for(int k=0;k<serviceCount;k++){
userPackageDetailService.insert(upd);
}
}
}
}
}
} 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);
}
}
} }
} }
} }
} }
//修改服务包销量
int sales = massagePackage.getSales();
sales = sales+quantity;
massagePackage.setSales(sales);
massagePackageService.updateSales(massagePackage);
} }
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.UserVipDao;
import com.sqx.modules.app.dao.VipDetailsDao; import com.sqx.modules.app.dao.VipDetailsDao;
import com.sqx.modules.app.entity.*; import com.sqx.modules.app.entity.*;
import com.sqx.modules.app.service.UserCertificationService; import com.sqx.modules.app.service.*;
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.artificer.dao.OrdersDao; import com.sqx.modules.artificer.dao.OrdersDao;
import com.sqx.modules.artificer.entity.*; import com.sqx.modules.artificer.entity.*;
import com.sqx.modules.artificer.service.*; 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.entity.CommonInfo;
import com.sqx.modules.common.service.CommonInfoService; import com.sqx.modules.common.service.CommonInfoService;
import com.sqx.modules.consortia.entity.Consortia; import com.sqx.modules.consortia.entity.Consortia;
@ -78,6 +85,8 @@ public class AliPayController {
@Autowired @Autowired
private UserMoneyDao userMoneyDao; private UserMoneyDao userMoneyDao;
@Autowired @Autowired
private UserMoneyService userMoneyService;
@Autowired
private PayDetailsDao payDetailsDao; private PayDetailsDao payDetailsDao;
@Autowired @Autowired
private UserMoneyDetailsService userMoneyDetailsService; private UserMoneyDetailsService userMoneyDetailsService;
@ -113,6 +122,17 @@ public class AliPayController {
private UserMoneyArtificerService userMoneyArtificerService; private UserMoneyArtificerService userMoneyArtificerService;
@Autowired @Autowired
private ArtificerTimeService artificerTimeService; 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"); private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@ -329,6 +349,21 @@ public class AliPayController {
} }
ordersService.sendMsg(orders); 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) { } else if (payDetails.getType() == 2) {
//缴纳保证金 //缴纳保证金
Double cashDeposit = payDetails.getMoney(); Double cashDeposit = payDetails.getMoney();
@ -342,23 +377,40 @@ public class AliPayController {
userMoneyDetails.setUserId(userId); userMoneyDetails.setUserId(userId);
userMoneyDetails.setTitle("缴纳保证金"); userMoneyDetails.setTitle("缴纳保证金");
userMoneyDetails.setContent("已缴纳保证金:" + cashDeposit + ""); userMoneyDetails.setContent("已缴纳保证金:" + cashDeposit + "");
userMoneyDetails.setType(1); // userMoneyDetails.setType(1);
userMoneyDetails.setManipulateType(1);
userMoneyDetails.setMoney(BigDecimal.valueOf(cashDeposit)); userMoneyDetails.setMoney(BigDecimal.valueOf(cashDeposit));
userMoneyDetails.setType(2);
userMoneyDetails.setState(2); userMoneyDetails.setState(2);
userMoneyDetails.setClassify(1); userMoneyDetails.setClassify(1);
userMoneyDetails.setCreateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); userMoneyDetails.setCreateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
userMoneyDetails.setBlRole(2);
userMoneyDetails.setBlFlag(2);
userMoneyDetailsService.save(userMoneyDetails); userMoneyDetailsService.save(userMoneyDetails);
} else if (payDetails.getType() == 3) { } else if (payDetails.getType() == 3) {
PayClassify payClassify = payClassifyService.getById(Long.parseLong(payDetails.getRemark())); PayClassify payClassify = payClassifyService.getById(Long.parseLong(payDetails.getRemark()));
userMoneyDao.updateMayMoney(1, payDetails.getUserId(), payClassify.getPrice().doubleValue()); userMoneyDao.updateMayMoney(1, payDetails.getUserId(), payClassify.getPrice().doubleValue());
//查询用户当前余额
UserMoney userNowMoney = userMoneyService.selectUserMoneyByUserId(payDetails.getUserId());
//钱包明细需要做调整2条记录充值时钱包类型增加金额现金类型减少金额
UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); UserMoneyDetails userMoneyDetails = new UserMoneyDetails();
//插入余额
userMoneyDetails.setBalance(userNowMoney.getMoney());
userMoneyDetails.setUserId(payDetails.getUserId()); userMoneyDetails.setUserId(payDetails.getUserId());
userMoneyDetails.setTitle("支付宝充值"); userMoneyDetails.setTitle("支付宝充值");
userMoneyDetails.setContent("支付宝充值:"+payClassify.getPrice()); userMoneyDetails.setContent("支付宝充值:"+payClassify.getPrice());
userMoneyDetails.setManipulateType(2);
userMoneyDetails.setType(1); userMoneyDetails.setType(1);
userMoneyDetails.setState(2);
userMoneyDetails.setMoney(payClassify.getPrice()); userMoneyDetails.setMoney(payClassify.getPrice());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
userMoneyDetails.setCreateTime(sdf.format(new Date())); 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); userMoneyDetailsService.save(userMoneyDetails);
@ -393,11 +445,15 @@ public class AliPayController {
UserMoneyDetails userMoneyDetails=new UserMoneyDetails(); UserMoneyDetails userMoneyDetails=new UserMoneyDetails();
userMoneyDetails.setClassify(1); userMoneyDetails.setClassify(1);
userMoneyDetails.setType(2); userMoneyDetails.setType(2);
userMoneyDetails.setState(2);
userMoneyDetails.setManipulateType(1);
userMoneyDetails.setMoney(BigDecimal.valueOf(payDetails.getMoney())); userMoneyDetails.setMoney(BigDecimal.valueOf(payDetails.getMoney()));
userMoneyDetails.setUserId(payDetails.getUserId()); userMoneyDetails.setUserId(payDetails.getUserId());
userMoneyDetails.setTitle("微信购买优惠券,卷包:"+couponIssue.getCouponIssueName()); userMoneyDetails.setTitle("微信购买优惠券,卷包:"+couponIssue.getCouponIssueName());
userMoneyDetails.setContent("购买优惠券费用:"+payDetails.getMoney()); userMoneyDetails.setContent("购买优惠券费用:"+payDetails.getMoney());
userMoneyDetails.setCreateTime(DateUtils.format(new Date())); userMoneyDetails.setCreateTime(DateUtils.format(new Date()));
userMoneyDetails.setBlRole(1);
userMoneyDetails.setBlFlag(2);
userMoneyDetailsService.save(userMoneyDetails); userMoneyDetailsService.save(userMoneyDetails);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
for(String couponId:couponIds){ for(String couponId:couponIds){
@ -478,7 +534,11 @@ public class AliPayController {
} }
userMoneyDetails.setTitle("开通会员"); userMoneyDetails.setTitle("开通会员");
userMoneyDetails.setType(2); userMoneyDetails.setType(2);
userMoneyDetails.setState(2);
userMoneyDetails.setManipulateType(1);
userMoneyDetails.setCreateTime(sdf.format(new Date())); userMoneyDetails.setCreateTime(sdf.format(new Date()));
userMoneyDetails.setBlRole(1);
userMoneyDetails.setBlFlag(2);
userMoneyDetailsService.save(userMoneyDetails); userMoneyDetailsService.save(userMoneyDetails);
UserEntity userEntity = userService.selectUserById(userId); UserEntity userEntity = userService.selectUserById(userId);
messageInfo.setTitle("开通会员"); messageInfo.setTitle("开通会员");
@ -533,18 +593,109 @@ public class AliPayController {
userMoneyArtificerService.updateMoney(1, payDetails.getUserId(), artificerId,money); userMoneyArtificerService.updateMoney(1, payDetails.getUserId(), artificerId,money);
} }
Artificer artificer = artificerService.getById(artificerId); Artificer artificer = artificerService.getById(artificerId);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//用户流水
UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); UserMoneyDetails userMoneyDetails = new UserMoneyDetails();
userMoneyDetails.setClassify(8); userMoneyDetails.setClassify(8);
userMoneyDetails.setManipulateType(1);
userMoneyDetails.setUserId(payDetails.getUserId()); userMoneyDetails.setUserId(payDetails.getUserId());
userMoneyDetails.setTitle("支付宝充值"); userMoneyDetails.setTitle("支付宝给技师充值");
userMoneyDetails.setContent("指定技师“"+artificer.getArtificerName()+"”钱包支付宝充值:"+money); userMoneyDetails.setContent("指定技师“"+artificer.getArtificerName()+"”钱包支付宝充值:"+money);
userMoneyDetails.setType(1); userMoneyDetails.setType(2);
userMoneyDetails.setState(2);
userMoneyDetails.setMoney(BigDecimal.valueOf(money)); 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.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); 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 @Login
@ApiOperation("支付宝支付订单") @ApiOperation("支付宝支付订单")

View File

@ -49,6 +49,13 @@ public class ApiWeiXinPayController {
return wxService.payOrder(ordersId,type,request); 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 @Login
@ApiOperation("缴纳保证金") @ApiOperation("缴纳保证金")

View File

@ -18,8 +18,12 @@ public interface WxService {
Result payOrder(Long id, Integer type,HttpServletRequest request) throws Exception; 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 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 payBack(String resXml,Integer type);
String payBacks(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.UserVipDao;
import com.sqx.modules.app.dao.VipDetailsDao; import com.sqx.modules.app.dao.VipDetailsDao;
import com.sqx.modules.app.entity.*; import com.sqx.modules.app.entity.*;
import com.sqx.modules.app.service.UserCertificationService; import com.sqx.modules.app.service.*;
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.artificer.dao.OrdersDao; import com.sqx.modules.artificer.dao.OrdersDao;
import com.sqx.modules.artificer.dao.RealNameDao; import com.sqx.modules.artificer.dao.RealNameDao;
import com.sqx.modules.artificer.dao.UserRechargeDao; import com.sqx.modules.artificer.dao.UserRechargeDao;
import com.sqx.modules.artificer.entity.*; import com.sqx.modules.artificer.entity.*;
import com.sqx.modules.artificer.service.*; 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.entity.CommonInfo;
import com.sqx.modules.common.service.CommonInfoService; import com.sqx.modules.common.service.CommonInfoService;
import com.sqx.modules.consortia.entity.Consortia; import com.sqx.modules.consortia.entity.Consortia;
@ -74,6 +81,8 @@ public class WxServiceImpl implements WxService {
@Autowired @Autowired
private UserMoneyDao userMoneyDao; private UserMoneyDao userMoneyDao;
@Autowired @Autowired
private UserMoneyService userMoneyService;
@Autowired
private UserMoneyDetailsService userMoneyDetailsService; private UserMoneyDetailsService userMoneyDetailsService;
@Autowired @Autowired
private OrdersService ordersService; private OrdersService ordersService;
@ -109,6 +118,16 @@ public class WxServiceImpl implements WxService {
private ArtificerTimeService artificerTimeService; private ArtificerTimeService artificerTimeService;
@Autowired @Autowired
private UserRechargeDao userRechargeDao; 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"); 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); return pay(payClassify.getPrice().doubleValue(), classify, userId, generalOrder,request);
} }
@Override @Override
public Result payOrder(Long id, Integer classify,HttpServletRequest request) throws Exception { public Result payOrder(Long id, Integer classify,HttpServletRequest request) throws Exception {
Orders orders = ordersService.getById(id); Orders orders = ordersService.getById(id);
@ -219,7 +237,38 @@ public class WxServiceImpl implements WxService {
payDetails1.setClassify(classify); payDetails1.setClassify(classify);
payDetailsDao.updateById(payDetails1); 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); return pay(orders.getPayMoney().doubleValue(), classify, orders.getUserId(), orders.getOrdersNo(),request);
} }
@ -324,7 +373,8 @@ public class WxServiceImpl implements WxService {
* @return * @return
* @throws Exception * @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服务域名配置 //h5服务域名配置
CommonInfo oneu = commonInfoService.findOne(19); CommonInfo oneu = commonInfoService.findOne(19);
String url; String url;
@ -761,6 +811,7 @@ public class WxServiceImpl implements WxService {
ordersDao.updateById(orders1); ordersDao.updateById(orders1);
}else{ }else{
MessageInfo messageInfo=new MessageInfo(); MessageInfo messageInfo=new MessageInfo();
messageInfo.setState("16"); messageInfo.setState("16");
@ -771,6 +822,20 @@ public class WxServiceImpl implements WxService {
} }
ordersService.sendMsg(orders); 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){ }else if(payDetails.getType()==2){
//缴纳保证金 //缴纳保证金
Double cashDeposit = payDetails.getMoney(); Double cashDeposit = payDetails.getMoney();
@ -784,23 +849,41 @@ public class WxServiceImpl implements WxService {
userMoneyDetails.setUserId(userId); userMoneyDetails.setUserId(userId);
userMoneyDetails.setTitle("缴纳保证金"); userMoneyDetails.setTitle("缴纳保证金");
userMoneyDetails.setContent("已缴纳保证金:"+cashDeposit+""); userMoneyDetails.setContent("已缴纳保证金:"+cashDeposit+"");
userMoneyDetails.setType(1); // userMoneyDetails.setType(1);
userMoneyDetails.setManipulateType(1);
userMoneyDetails.setType(2);
userMoneyDetails.setMoney(BigDecimal.valueOf(cashDeposit)); userMoneyDetails.setMoney(BigDecimal.valueOf(cashDeposit));
userMoneyDetails.setState(2); userMoneyDetails.setState(2);
userMoneyDetails.setClassify(1); userMoneyDetails.setClassify(1);
userMoneyDetails.setCreateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); userMoneyDetails.setCreateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
userMoneyDetails.setBlRole(2);
userMoneyDetails.setBlFlag(2);
userMoneyDetailsService.save(userMoneyDetails); userMoneyDetailsService.save(userMoneyDetails);
}else if(payDetails.getType()==3){ }else if(payDetails.getType()==3){
PayClassify payClassify = payClassifyService.getById(Long.parseLong(payDetails.getRemark())); PayClassify payClassify = payClassifyService.getById(Long.parseLong(payDetails.getRemark()));
userMoneyDao.updateMayMoney(1, payDetails.getUserId(), payClassify.getPrice().doubleValue()); userMoneyDao.updateMayMoney(1, payDetails.getUserId(), payClassify.getPrice().doubleValue());
//查询用户当前余额
UserMoney userNowMoney = userMoneyService.selectUserMoneyByUserId(payDetails.getUserId());
//钱包明细需要做调整2条记录充值时钱包类型增加金额现金类型减少金额
UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); UserMoneyDetails userMoneyDetails = new UserMoneyDetails();
//插入余额
userMoneyDetails.setBalance(userNowMoney.getMoney());
userMoneyDetails.setUserId(payDetails.getUserId()); userMoneyDetails.setUserId(payDetails.getUserId());
userMoneyDetails.setTitle("微信充值"); userMoneyDetails.setTitle("微信充值");
userMoneyDetails.setContent("微信充值:"+payClassify.getPrice()); userMoneyDetails.setContent("微信充值:"+payClassify.getPrice());
userMoneyDetails.setManipulateType(2);
userMoneyDetails.setType(1); userMoneyDetails.setType(1);
userMoneyDetails.setState(2);
userMoneyDetails.setMoney(payClassify.getPrice()); userMoneyDetails.setMoney(payClassify.getPrice());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
userMoneyDetails.setCreateTime(sdf.format(new Date())); 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); userMoneyDetailsService.save(userMoneyDetails);
if(payClassify.getCouponId()!=null && payClassify.getGiveNum()>0){ if(payClassify.getCouponId()!=null && payClassify.getGiveNum()>0){
@ -834,11 +917,15 @@ public class WxServiceImpl implements WxService {
UserMoneyDetails userMoneyDetails=new UserMoneyDetails(); UserMoneyDetails userMoneyDetails=new UserMoneyDetails();
userMoneyDetails.setClassify(1); userMoneyDetails.setClassify(1);
userMoneyDetails.setType(2); userMoneyDetails.setType(2);
userMoneyDetails.setState(2);
userMoneyDetails.setManipulateType(1);
userMoneyDetails.setMoney(BigDecimal.valueOf(payDetails.getMoney())); userMoneyDetails.setMoney(BigDecimal.valueOf(payDetails.getMoney()));
userMoneyDetails.setUserId(payDetails.getUserId()); userMoneyDetails.setUserId(payDetails.getUserId());
userMoneyDetails.setTitle("微信购买优惠券,卷包:"+couponIssue.getCouponIssueName()); userMoneyDetails.setTitle("微信购买优惠券,卷包:"+couponIssue.getCouponIssueName());
userMoneyDetails.setContent("购买优惠券费用:"+payDetails.getMoney()); userMoneyDetails.setContent("购买优惠券费用:"+payDetails.getMoney());
userMoneyDetails.setCreateTime(DateUtils.format(new Date())); userMoneyDetails.setCreateTime(DateUtils.format(new Date()));
userMoneyDetails.setBlRole(1);
userMoneyDetails.setBlFlag(2);
userMoneyDetailsService.save(userMoneyDetails); userMoneyDetailsService.save(userMoneyDetails);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
for(String couponId:couponIds){ for(String couponId:couponIds){
@ -919,7 +1006,11 @@ public class WxServiceImpl implements WxService {
} }
userMoneyDetails.setTitle("开通会员"); userMoneyDetails.setTitle("开通会员");
userMoneyDetails.setType(2); userMoneyDetails.setType(2);
userMoneyDetails.setState(2);
userMoneyDetails.setManipulateType(1);
userMoneyDetails.setCreateTime(sdf.format(new Date())); userMoneyDetails.setCreateTime(sdf.format(new Date()));
userMoneyDetails.setBlRole(1);
userMoneyDetails.setBlFlag(2);
userMoneyDetailsService.save(userMoneyDetails); userMoneyDetailsService.save(userMoneyDetails);
UserEntity userEntity = userService.selectUserById(userId); UserEntity userEntity = userService.selectUserById(userId);
messageInfo.setTitle("开通会员"); messageInfo.setTitle("开通会员");
@ -973,18 +1064,109 @@ public class WxServiceImpl implements WxService {
userMoneyArtificerService.updateMoney(1, payDetails.getUserId(),artificerId, money); userMoneyArtificerService.updateMoney(1, payDetails.getUserId(),artificerId, money);
} }
Artificer artificer = artificerService.getById(artificerId); Artificer artificer = artificerService.getById(artificerId);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//用户流水
UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); UserMoneyDetails userMoneyDetails = new UserMoneyDetails();
userMoneyDetails.setClassify(8); userMoneyDetails.setClassify(8);
userMoneyDetails.setManipulateType(1);
userMoneyDetails.setUserId(payDetails.getUserId()); userMoneyDetails.setUserId(payDetails.getUserId());
userMoneyDetails.setTitle("微信充值"); userMoneyDetails.setTitle("微信给技师充值");
userMoneyDetails.setContent("指定技师“"+artificer.getArtificerName()+"”钱包微信充值:"+money); userMoneyDetails.setContent("指定技师“"+artificer.getArtificerName()+"”钱包微信充值:"+money);
userMoneyDetails.setType(1); userMoneyDetails.setType(2);
userMoneyDetails.setState(2);
userMoneyDetails.setMoney(BigDecimal.valueOf(money)); 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.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); 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 + ""); System.err.println("微信手机支付回调成功订单号:" + out_trade_no + "");

View File

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

View File

@ -19,4 +19,96 @@
</if> </if>
</select> </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> </mapper>

View File

@ -9,12 +9,7 @@
a.orders_no, a.orders_no,
a.user_id, a.user_id,
b.user_name, b.user_name,
a.package_id,
a.package_name,
a.type,
a.vip_rate, a.vip_rate,
a.price,
a.quantity,
a.old_sum_money, a.old_sum_money,
a.sum_money, a.sum_money,
a.pay_money, a.pay_money,
@ -25,24 +20,65 @@
a.coupon_count, a.coupon_count,
a.coupon_money, a.coupon_money,
a.refund_time, 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 from bl_user_package_order a left join tb_user b on a.user_id = b.user_id
where 1=1 where 1=1
<if test="params.status!=null and params.status!=0"> <if test="params.status!=null and params.status!=0">
and a.status=#{params.status} and a.status=#{params.status}
</if> </if>
<if test="params.type!=null and params.type!=''">
and a.type=#{params.type}
</if>
<if test="params.ordersNo!=null and params.ordersNo!=''"> <if test="params.ordersNo!=null and params.ordersNo!=''">
and a.orders_no like concat('%',#{params.ordersNo},'%') and a.orders_no like concat('%',#{params.ordersNo},'%')
</if> </if>
<if test="params.packageName!=null and params.packageName!=''">
and a.package_name like concat('%',#{params.packageName},'%')
</if>
order by a.orders_id desc order by a.orders_id desc
</select> </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 id="findCoupon" resultType="com.sqx.modules.bl.order.entity.UserPackageOrder">
select select
coupon_name, coupon_name,
@ -70,24 +106,9 @@
<if test="null != userId "> <if test="null != userId ">
user_id, user_id,
</if> </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 "> <if test="null != vipRate ">
vip_rate, vip_rate,
</if> </if>
<if test="null != price ">
price,
</if>
<if test="null != quantity ">
quantity,
</if>
<if test="null != oldSumMoney "> <if test="null != oldSumMoney ">
old_sum_money, old_sum_money,
</if> </if>
@ -113,7 +134,10 @@
coupon_count, coupon_count,
</if> </if>
<if test="null != couponMoney "> <if test="null != couponMoney ">
coupon_money coupon_money,
</if>
<if test="null != createTime and '' != createTime">
create_time
</if> </if>
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
@ -123,24 +147,9 @@
<if test="null != userId "> <if test="null != userId ">
#{userId}, #{userId},
</if> </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 "> <if test="null != vipRate ">
#{vipRate}, #{vipRate},
</if> </if>
<if test="null != price ">
#{price},
</if>
<if test="null != quantity ">
#{quantity},
</if>
<if test="null != oldSumMoney "> <if test="null != oldSumMoney ">
#{oldSumMoney}, #{oldSumMoney},
</if> </if>
@ -166,7 +175,10 @@
#{couponCount}, #{couponCount},
</if> </if>
<if test="null != couponMoney "> <if test="null != couponMoney ">
#{couponMoney} #{couponMoney},
</if>
<if test="null != createTime and '' != createTime">
#{createTime}
</if> </if>
</trim> </trim>
</insert> </insert>
@ -176,6 +188,17 @@
values(#{ordersId},#{userCouponId},#{couponName},#{couponMoney}) values(#{ordersId},#{userCouponId},#{couponName},#{couponMoney})
</insert> </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> </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>