团购、限时秒杀

This commit is contained in:
曹磊 2024-07-18 21:12:33 +08:00
parent fa5b5ff12d
commit 1161def58a
28 changed files with 1586 additions and 24 deletions

View File

@ -1,16 +1,15 @@
package com.sqx.modules.bl.massage.app;
import com.sqx.common.utils.DateUtils;
import com.sqx.common.utils.Result;
import com.sqx.modules.app.annotation.Login;
import com.sqx.modules.bl.massage.entity.MassagePackage;
import com.sqx.modules.bl.massage.entity.MassagePackageDetail;
import com.sqx.modules.bl.massage.service.MassagePackageService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.text.SimpleDateFormat;
import java.util.Date;
@ -23,7 +22,7 @@ public class AppMassagePackageController {
@Autowired
private MassagePackageService service;
// @Login
@Login
@GetMapping("/findPage")
@ApiOperation("查询按服务包(分页)")
public Result findPage(MassagePackage massagePackage){
@ -31,7 +30,7 @@ public class AppMassagePackageController {
return service.findPage(massagePackage);
}
// @Login
@Login
@GetMapping("/findPackageAndMassagePage")
@ApiOperation("查询按服务包及项目(分页)")
public Result findPackageAndMassagePage(MassagePackage massagePackage){
@ -39,4 +38,25 @@ public class AppMassagePackageController {
return service.findPackageAndMassagePage(massagePackage);
}
@Login
@GetMapping("/findAppActivityPage")
@ApiOperation("查询按服务包(分页)")
public Result findAppActivityPage(MassagePackage massagePackage){
return service.findAppActivityPage(massagePackage);
}
@Login
@GetMapping("/getAppGroupDetail")
@ApiOperation("查询团购详情")
public Result getAppGroupDetail(@RequestAttribute("userId") Long userId,MassagePackage massagePackage){
return service.getAppGroupDetail(userId,massagePackage);
}
@Login
@GetMapping("/getAppFlashDetail")
@ApiOperation("查询限时秒杀详情")
public Result getAppFlashDetail(@RequestAttribute("userId") Long userId,MassagePackage massagePackage){
return service.getAppFlashDetail(userId,massagePackage);
}
}

View File

@ -19,4 +19,6 @@ public interface MassagePackageDao extends BaseMapper<MassagePackage> {
int updatePrice(MassagePackage massagePackage);
int delete(MassagePackage massagePackage);
IPage<MassagePackage> findPackageAndMassagePage(Page<MassagePackage> page,@Param("params") MassagePackage massagePackage);
IPage<MassagePackage> findAppActivityPage(Page<MassagePackage> page,@Param("params") MassagePackage massagePackage);
MassagePackage getAppActivityDetail(Long id);
}

View File

@ -37,6 +37,12 @@ public class MassagePackage implements Serializable {
*/
private Integer type;
/**
* 类型名称
*/
@TableField(exist = false)
private String typeName;
/**
* 原价
*/
@ -112,16 +118,47 @@ public class MassagePackage implements Serializable {
*/
private Long classifyId;
/**
* 服务分类
*/
@TableField(exist = false)
private Long classifyName;
/**
* 等级 3新手 4专家 5资深
*/
private Integer level;
/**
* 类型名称
* 组团人数
*/
private Integer groupNum;
/**
* 正在拼团人数
*/
@TableField(exist = false)
private String typeName;
private Integer buyGroupNum;
/**
* 开始时间
*/
private String startTime;
/**
* 结束时间
*/
private String endTime;
/**
* 是否活动0否1是
*/
private Integer isActivity;
/**
* 是否只限新用户0否1是
*/
private Integer isNewer;
/**
* 服务次数
@ -129,6 +166,30 @@ public class MassagePackage implements Serializable {
@TableField(exist = false)
private Integer serviceCount;
/**
* 服务时长
*/
@TableField(exist = false)
private Integer duration;
/**
* 是否限制性别 0不限制 1男 2女
*/
@TableField(exist = false)
private Integer isSex;
/**
* 适用人群
*/
@TableField(exist = false)
private String applyPeople;
/**
* 简介
*/
@TableField(exist = false)
private String jianjie;
/**
* 分类标识
*/

View File

@ -14,6 +14,8 @@ public interface MassagePackageService extends IService<MassagePackage> {
int updateStatus(MassagePackage massagePackage);
int updatePrice(MassagePackage massagePackage);
int delete(MassagePackage massagePackage);
Result findPackageAndMassagePage(MassagePackage massagePackage);
Result findAppActivityPage(MassagePackage massagePackage);
Result getAppGroupDetail(Long userId,MassagePackage massagePackage);
Result getAppFlashDetail(Long userId,MassagePackage massagePackage);
}

View File

@ -2,16 +2,39 @@ package com.sqx.modules.bl.massage.service.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.sqx.common.utils.DateUtils;
import com.sqx.common.utils.PageUtils;
import com.sqx.common.utils.Result;
import com.sqx.modules.app.entity.UserEntity;
import com.sqx.modules.app.service.UserService;
import com.sqx.modules.bl.collect.entity.CollectMassage;
import com.sqx.modules.bl.collect.service.CollectMassageService;
import com.sqx.modules.bl.massage.dao.MassagePackageDao;
import com.sqx.modules.bl.massage.entity.MassagePackage;
import com.sqx.modules.bl.massage.entity.MassagePackageDetail;
import com.sqx.modules.bl.massage.service.MassagePackageService;
import com.sqx.modules.bl.order.entity.UserPackageOrder;
import com.sqx.modules.bl.order.service.UserPackageOrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class MassagePackageServiceImpl extends ServiceImpl<MassagePackageDao, MassagePackage> implements MassagePackageService {
@Autowired
UserPackageOrderService orderService;
@Autowired
private CollectMassageService collectMassageService;
@Autowired
private UserService userService;
@Override
public Result findPage(MassagePackage massagePackage){
Page<MassagePackage> pages=new Page<>(massagePackage.getPage(),massagePackage.getLimit());
@ -58,4 +81,78 @@ public class MassagePackageServiceImpl extends ServiceImpl<MassagePackageDao, Ma
return Result.success().put("data",new PageUtils(baseMapper.findPackageAndMassagePage(pages,massagePackage)));
}
@Override
public Result findAppActivityPage(MassagePackage massagePackage){
massagePackage.setStartTime(DateUtils.format(new Date()));
Page<MassagePackage> pages=new Page<>(massagePackage.getPage(),massagePackage.getLimit());
return Result.success().put("data",new PageUtils(baseMapper.findAppActivityPage(pages,massagePackage)));
}
/**
* 查询团购详情
* @param userId
* @param massagePackage
* @return 团购详情拼团人数正在拼团订单正在拼团人时间差几人拼成
*/
@Override
public Result getAppGroupDetail(Long userId,MassagePackage massagePackage){
//插入浏览历史
CollectMassage collectMassage=new CollectMassage();
collectMassage.setClassify(2);
collectMassage.setUserId(userId);
collectMassage.setProjectId(massagePackage.getId());
collectMassage.setFlag(3);
collectMassageService.insertCollect(collectMassage);
Map<String, Object> map = new HashMap<String, Object>();
MassagePackage entity = baseMapper.getAppActivityDetail(massagePackage.getId());
List<UserPackageOrder> groupNoList = orderService.getActivityOrderList(massagePackage.getId(),4);
int groupNum = entity.getGroupNum();
Map<Long,String> userMap = new HashMap<Long,String>();
if(groupNoList.size()>0){
for(int i=0;i< groupNoList.size();i++){
UserPackageOrder userPackageOrder = groupNoList.get(i);
userPackageOrder.setStartTime(entity.getStartTime());
userPackageOrder.setEndTime(entity.getEndTime());
int lessNum = userPackageOrder.getLessNum();
lessNum = groupNum - lessNum;
userPackageOrder.setLessNum(lessNum);
String groupNo = userPackageOrder.getGroupNo();
List<UserPackageOrder> orderList = orderService.getActivityOrderListByGroupNo(groupNo);
if(orderList.size()>0){
for(UserPackageOrder order : orderList){
UserEntity user = userService.selectUserById(order.getUserId());
String phone = user.getPhone().trim();
phone = phone.substring(phone.length()-4);
order.setPhone(phone);
order.setAvatar(user.getAvatar());
userMap.put(order.getUserId(),phone);
}
userPackageOrder.setOrderList(orderList);
}
}
}
entity.setBuyGroupNum(map.size());
map.put("groupData",entity);
map.put("ordersData",groupNoList);
return Result.success(map);
}
/**
* 查询限时秒杀详情
* @param userId
* @param massagePackage
*/
@Override
public Result getAppFlashDetail(Long userId,MassagePackage massagePackage){
//插入浏览历史
CollectMassage collectMassage=new CollectMassage();
collectMassage.setClassify(2);
collectMassage.setUserId(userId);
collectMassage.setProjectId(massagePackage.getId());
collectMassage.setFlag(4);
collectMassageService.insertCollect(collectMassage);
MassagePackage entity = baseMapper.getAppActivityDetail(massagePackage.getId());
return Result.success().put("data",entity);
}
}

View File

@ -41,7 +41,7 @@ public class AppUserPackageOrderController {
@PostMapping("/findUserPackageOrders")
@ApiOperation("查询服务包订单")
public Result findUserPackageOrders(@RequestBody UserPackageOrder userPackageOrder){
//入参用户ID代金券IDS原总金额应付总金额会员优惠比
//入参用户ID
return service.findUserPackageOrders(userPackageOrder);
}
@ -53,5 +53,28 @@ public class AppUserPackageOrderController {
return service.selectOrdersDetails(ordersId);
}
@Login
@PostMapping("/insertGroupOrders")
@ApiOperation("添加团购订单")
public Result insertGroupOrders(@RequestBody UserPackageOrder userPackageOrder){
//入参用户ID代金券IDS会员优惠比团号开始时间结束时间是否只限新用户
return service.insertGroupOrders(userPackageOrder);
}
@Login
@PostMapping("/payGroupOrders")
@ApiOperation("支付团购订单")
public Result payGroupOrders(Long ordersId){
//入参用户ID代金券IDS会员优惠比团号
return service.payGroupOrders(ordersId);
}
@Login
@PostMapping("/insertFlashOrders")
@ApiOperation("添加限时秒杀订单")
public Result insertFlashOrders(@RequestBody UserPackageOrder userPackageOrder){
//入参用户ID代金券IDS会员优惠比开始时间结束时间是否只限新用户
return service.insertFlashOrders(userPackageOrder);
}
}

View File

@ -24,4 +24,6 @@ public interface UserPackageDao extends BaseMapper<UserPackage> {
UserPackage getMyPackageById(Long id);
int deletePackageByOrders(Long ordersId);
}

View File

@ -25,4 +25,6 @@ public interface UserPackageDetailDao extends BaseMapper<UserPackageDetail> {
UserPackageDetail findMassagePackageDetailsUsed(Long mainId);
int deleteDetailByMain(Long mainId);
}

View File

@ -32,5 +32,12 @@ public interface UserPackageOrderDao extends BaseMapper<UserPackageOrder> {
int updateStatus(UserPackageOrder userPackageOrder);
List<UserPackageOrder> getActivityOrderList(Long id,Integer status);
List<UserPackageOrder> getActivityOrderListByGroupNo(String groupNo,Long userId);
int updateStatusByGroupNo(UserPackageOrder userPackageOrder);
List<UserPackageOrder> getUnGroupOrderList();
}

View File

@ -15,4 +15,6 @@ public interface UserPackageOrdersMappingDao extends BaseMapper<UserPackageOrder
int insert(UserPackageOrdersMapping userPackageOrdersMapping);
int deleteByOrdersId(Long ordersId);
}

View File

@ -46,11 +46,28 @@ public class UserPackageOrder implements Serializable {
@TableField(exist = false)
private String userName;
/**
* 电话
*/
@TableField(exist = false)
private String phone;
/**
* 头像
*/
@TableField(exist = false)
private String avatar;
/**
* 会员优惠比例
*/
private BigDecimal vipRate;
/**
* VIP减免金额
*/
private BigDecimal vipReductionMoney;
/**
* 原总金额
*/
@ -106,6 +123,17 @@ public class UserPackageOrder implements Serializable {
*/
private BigDecimal refundMoney;
/**
* 团号
*/
private String groupNo;
/**
* 代金券名称
*/
@TableField(exist = false)
private String couponName;
/**
* 用户优惠券id
*/
@ -124,10 +152,28 @@ public class UserPackageOrder implements Serializable {
private Long type;
/**
* 代金券名称
* 开始时间
*/
@TableField(exist = false)
private String couponName;
private String startTime;
/**
* 结束时间
*/
@TableField(exist = false)
private String endTime;
/**
* 是否只限新用户
*/
@TableField(exist = false)
private Integer isNewer;
/**
* 差几个人数
*/
@TableField(exist = false)
private Integer lessNum;
@TableField(exist = false)
private Integer page;
@ -141,5 +187,8 @@ public class UserPackageOrder implements Serializable {
@TableField(exist = false)
private List<CouponUser> couponUserList;
@TableField(exist = false)
private List<UserPackageOrder> orderList;
public UserPackageOrder() {}
}

View File

@ -13,4 +13,5 @@ public interface UserPackageDetailService extends IService<UserPackageDetail> {
Result findAppUsedQuantity(UserPackageDetail userPackageDetail);
Result getMyPackageDetail(UserPackageDetail userPackageDetail);
UserPackageDetail findMassagePackageDetailsUsed(Long mainId);
int deleteDetailByMain(Long mainId);
}

View File

@ -5,6 +5,7 @@ import com.sqx.common.utils.Result;
import com.sqx.modules.bl.order.entity.UserPackageOrder;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
public interface UserPackageOrderService extends IService<UserPackageOrder> {
Result findPage(UserPackageOrder userPackageOrder);
@ -19,4 +20,15 @@ public interface UserPackageOrderService extends IService<UserPackageOrder> {
Result findUserPackageOrders(UserPackageOrder userPackageOrder);
List<UserPackageOrder> getActivityOrderList(Long id,Integer status);
List<UserPackageOrder> getActivityOrderListByGroupNo(String groupNo);
Result insertGroupOrders(UserPackageOrder userPackageOrder);
Result payGroupOrders(Long ordersId);
Result insertFlashOrders(UserPackageOrder userPackageOrder);
}

View File

@ -12,4 +12,6 @@ public interface UserPackageOrdersMappingService extends IService<UserPackageOrd
List<UserPackageOrdersMapping> findListByOrdersId(Long ordersId);
int insert(UserPackageOrdersMapping userPackageOrdersMapping);
int deleteByOrdersId(Long ordersId);
}

View File

@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.sqx.common.utils.Result;
import com.sqx.modules.bl.order.entity.UserPackage;
import java.util.List;
public interface UserPackageService extends IService<UserPackage> {
Result findList(UserPackage userPackage);
@ -15,4 +17,8 @@ public interface UserPackageService extends IService<UserPackage> {
Result findMyPackageList(UserPackage userPackage);
UserPackage getMyPackageById(Long id);
int deletePackageByOrders(Long ordersId);
List<UserPackage> findList(Long ordersId);
}

View File

@ -75,4 +75,11 @@ public class UserPackageDetailServiceImpl extends ServiceImpl<UserPackageDetailD
public UserPackageDetail findMassagePackageDetailsUsed(Long mainId){
return baseMapper.findMassagePackageDetailsUsed(mainId);
}
@Override
public int deleteDetailByMain(Long mainId){
return baseMapper.deleteDetailByMain(mainId);
}
}

View File

@ -1,16 +1,20 @@
package com.sqx.modules.bl.order.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import com.sqx.common.utils.DateUtils;
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.*;
import com.sqx.modules.app.service.UserMoneyDetailsService;
import com.sqx.modules.app.service.UserMoneyService;
import com.sqx.modules.app.service.UserService;
import com.sqx.modules.app.service.UserVipService;
import com.sqx.modules.artificer.entity.Artificer;
import com.sqx.modules.artificer.entity.MassageType;
@ -33,6 +37,9 @@ 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 com.sqx.modules.pay.controller.app.AliPayController;
import com.sqx.modules.pay.service.WxService;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
@ -83,6 +90,15 @@ public class UserPackageOrderServiceImpl extends ServiceImpl<UserPackageOrderDao
@Autowired
private CommonInfoService commonInfoService;
@Autowired
private WxService wxService;
@Autowired
private AliPayController aliPayController;
@Autowired
private UserService userService;
private ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteLock(true);
@Override
@ -233,10 +249,12 @@ public class UserPackageOrderServiceImpl extends ServiceImpl<UserPackageOrderDao
}
}
userPackageOrder.setVipRate(vipRate);
BigDecimal vipMoney = canVipMoney;
BigDecimal unCanVipMoney = totalMoney.subtract(canVipMoney);//非会员优惠金额
canVipMoney = canVipMoney.multiply(userPackageOrder.getVipRate()).divide(new BigDecimal(100));//对可用vip的金额进行优惠
canVipMoney = canVipMoney.setScale(2,BigDecimal.ROUND_HALF_UP);
canVipMoney = canVipMoney.setScale(0,BigDecimal.ROUND_UP);
BigDecimal vipReductionMoney = vipMoney.subtract(canVipMoney);
userPackageOrder.setVipReductionMoney(vipReductionMoney);//会员减免金额
totalMoney = canVipMoney.add(unCanVipMoney);//优惠后的总金额
totalMoney = totalMoney.subtract(userPackageOrder.getCouponMoney());//减去优惠券额度后的总金额
@ -291,7 +309,7 @@ public class UserPackageOrderServiceImpl extends ServiceImpl<UserPackageOrderDao
}else if(orders.getStatus()==2){
return Result.error("订单已退款!");
}else if(orders.getStatus()==3){
return Result.error("订单支付超时,请发起支付");
return Result.error("订单支付超时,请重新发起购买");
}
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@ -394,6 +412,480 @@ public class UserPackageOrderServiceImpl extends ServiceImpl<UserPackageOrderDao
return Result.success().put("data", baseMapper.findUserPackageOrders(pages,userPackageOrder));
}
/**
* 获取拼团订单团号和拼团人数
* @param id
* @param status
* @return
*/
@Override
public List<UserPackageOrder> getActivityOrderList(Long id,Integer status){
return baseMapper.getActivityOrderList(id,status);
}
/**
* 获取拼团订单信息
* @param groupNo
* @return
*/
@Override
public List<UserPackageOrder> getActivityOrderListByGroupNo(String groupNo){
return baseMapper.getActivityOrderListByGroupNo(groupNo,null);
}
@Override
@Transactional
public Result insertGroupOrders(UserPackageOrder userPackageOrder){
try {
Long userId = userPackageOrder.getUserId();
String groupNo = userPackageOrder.getGroupNo();
int isNewer = userPackageOrder.getIsNewer();
String startTimeStr = userPackageOrder.getStartTime();
String endTimeStr = userPackageOrder.getEndTime();
Date startTime = DateUtils.stringToDate(startTimeStr,"yyyy-MM-dd HH:mm:ss");
Date endTime = DateUtils.stringToDate(endTimeStr,"yyyy-MM-dd HH:mm:ss");
if(startTime.getTime()>System.currentTimeMillis()){
return Result.error("团购还未开始,请稍后重试!");
}
if(endTime.getTime()<System.currentTimeMillis()){
return Result.error("团购已结束,无法进行团购!");
}
if(isNewer == 1){
//只限新用户
UserEntity user = userService.selectUserById(userId);
String createTimeStr = user.getCreateTime();
Date createTime = DateUtils.addDateDays(DateUtils.stringToDate(createTimeStr,"yyyy-MM-dd HH:mm:ss"),7);
if(createTime.getTime()<System.currentTimeMillis()){
return Result.error("该团购只限新用户,请选择其他团购!");
}
}
if(groupNo != null && !groupNo.equals("")){
List<UserPackageOrder> list = baseMapper.getActivityOrderListByGroupNo(groupNo,userId);
if(list.size()>0){
for(UserPackageOrder orders : list){
if(orders.getStatus().equals(1) || orders.getStatus().equals(4)){
return Result.error("您已参与此团购,无法重复参加!");
}
//取消代金券
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);
}
}
}
}
}
//删除订单项目
userPackageOrdersMappingService.deleteByOrdersId(orders.getOrdersId());
//删除订单
baseMapper.deleteById(orders.getOrdersId());
}
}
}
BigDecimal canCouponMoney = BigDecimal.ZERO;//当可用代金券时的金额
BigDecimal canVipMoney = BigDecimal.ZERO;//当可用vip时的金额
BigDecimal totalMoney = BigDecimal.ZERO;//总金额
List<Long> classifyIdArr = Lists.newArrayList();
List<UserPackageOrdersMapping> ordersPackageList = userPackageOrder.getOrdersPackageList();
for (UserPackageOrdersMapping ordersPackage : ordersPackageList) {
MassagePackage massagePackage = massagePackageService.getById(ordersPackage.getPackageId());
BigDecimal sum = massagePackage.getPrice().multiply(new BigDecimal(ordersPackage.getNum()));
sum = sum.setScale(0,BigDecimal.ROUND_UP);
if(massagePackage.getIsCanCoupon() == 1){
canCouponMoney = canCouponMoney.add(sum);
}
if(massagePackage.getIsCanVip() == 1){
canVipMoney = canVipMoney.add(sum);
}
totalMoney = totalMoney.add(sum);
Long classifyId = massagePackage.getClassifyId();
classifyIdArr.add(classifyId);
}
BigDecimal couponMinMoney = BigDecimal.ZERO;//所有代金券的使用额度总和
List<CouponUser> CouponUserList = Lists.newArrayList();
String couponIds = userPackageOrder.getCouponId();
if(couponIds!=null && couponIds.length()>0){
if(canCouponMoney.compareTo(BigDecimal.ZERO)==0){
return Result.error("此次团购不支持优惠券!");
}
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("优惠券已被使用!");
}
if(couponUser.getClassifyId()!=0){
if(!classifyIdArr.contains(couponUser.getClassifyId())){
return Result.error("优惠券不满足使用条件!");
}
}
couponMinMoney = couponMinMoney.add(couponUser.getMinMoney());
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(canCouponMoney.compareTo(couponMinMoney) < 0){
return Result.error("当前应付总金额不满足优惠券使用的最小额度,请重新选择优惠券!");
}
//获取用户VIP的优惠信息
BigDecimal vipRate = new BigDecimal(100);
//服务包支持vip时获取vip优惠比例
if(canVipMoney.compareTo(BigDecimal.ZERO)>0) {
UserVip userVip = userVipService.selectUserVipByUserId(userPackageOrder.getUserId());
if (userVip != null) {
if (userVip.getIsVip() == 1) {
//获取用户到期时间
Date date = DateUtils.stringToDate(userVip.getEndTime(),"yyyy-MM-dd HH:mm:ss");
if (date.getTime() >= System.currentTimeMillis()) {
VipDetails vipDetails = vipDetailsDao.selectOne(new QueryWrapper<VipDetails>().eq("vip_name_type", userVip.getVipNameType()));
if (vipDetails != null) {
vipRate = vipDetails.getRate();
}
}
}
}
}
userPackageOrder.setVipRate(vipRate);
BigDecimal vipMoney = canVipMoney;
BigDecimal unCanVipMoney = totalMoney.subtract(canVipMoney);//非会员优惠金额
canVipMoney = canVipMoney.multiply(userPackageOrder.getVipRate()).divide(new BigDecimal(100));//对可用vip的金额进行优惠
canVipMoney = canVipMoney.setScale(0,BigDecimal.ROUND_UP);
BigDecimal vipReductionMoney = vipMoney.subtract(canVipMoney);
userPackageOrder.setVipReductionMoney(vipReductionMoney);//会员减免金额
totalMoney = canVipMoney.add(unCanVipMoney);//优惠后的总金额
totalMoney = totalMoney.subtract(userPackageOrder.getCouponMoney());//减去优惠券额度后的总金额
userPackageOrder.setPayMoney(totalMoney);
userPackageOrder.setCreateTime(DateUtils.format(new Date()));
userPackageOrder.setStatus(0);
userPackageOrder.setOrdersNo(getGeneralOrder());
userPackageOrder.setGroupNo(getGeneralGroupNo());
//插入订单表
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));
}
userPackageOrder.setCouponUserList(CouponUserList);
}
//插入用户-服务包-订单-服务包与订单映射关系表
for (UserPackageOrdersMapping ordersPackage : ordersPackageList) {
ordersPackage.setOrdersId(ordersId);
userPackageOrdersMappingService.insert(ordersPackage);
}
} catch (Exception e) {
e.printStackTrace();
log.error("添加订单异常" + e.getMessage(), e);
}
return Result.success().put("data", userPackageOrder);
}
@Override
@Transactional
public Result payGroupOrders(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("订单支付超时,请重新发起购买!");
}
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(DateUtils.format(new Date()));
userMoneyDetails.setBlRole(1);
userMoneyDetails.setBlFlag(1);
userMoneyDetailsService.insert(userMoneyDetails);
orders.setStatus(4);//团购中
orders.setPayWay(5);
orders.setPayTime(DateUtils.format(new Date()));
baseMapper.updateStatus(orders);
//获取支付已支付的数量是否满足此次团购人数是则完成此次拼团并将商品发送给客户
int buyGroupNum = 0;
int groupNum = 0;
List<UserPackageOrder> list = baseMapper.getActivityOrderListByGroupNo(orders.getGroupNo(),null);
if(list.size()>0){
for(UserPackageOrder userPackageOrder : list) {
if (userPackageOrder.getStatus().equals(1) || userPackageOrder.getStatus().equals(4)) {
buyGroupNum++;
}
}
}
MassagePackage massagePackage = null;
List<UserPackageOrdersMapping> mappingList = userPackageOrdersMappingService.findListByOrdersId(ordersId);
if(mappingList.size()>0){
Long packageId = mappingList.get(0).getPackageId();
massagePackage = massagePackageService.getById(packageId);
groupNum = massagePackage.getGroupNum();
}
if(buyGroupNum>0 && groupNum>0 && buyGroupNum>=groupNum){
for(UserPackageOrder userPackageOrder : list) {
if (userPackageOrder.getStatus().equals(1) || userPackageOrder.getStatus().equals(4)) {
//删除单据防止重复数据
List<UserPackage> userPackageList = userPackageService.findList(userPackageOrder.getOrdersId());
if(userPackageList.size()>0){
for(UserPackage userPackage : userPackageList){
userPackageService.removeById(userPackage.getId());
userPackageDetailService.deleteDetailByMain(userPackage.getId());
}
}
//插入单据
List<UserPackageOrdersMapping> packageOrderMappingList = userPackageOrdersMappingService.findListByOrdersId(userPackageOrder.getOrdersId());
for (UserPackageOrdersMapping ordersPackage : packageOrderMappingList) {
int quantity = ordersPackage.getNum();
for(int i=0;i<quantity;i++){
//拆分插入用户团购
UserPackage userPackage = new UserPackage();
userPackage.setUserId(userPackageOrder.getUserId());
userPackage.setPackageId(massagePackage.getId());
userPackage.setOrdersId(userPackageOrder.getOrdersId());
userPackage.setOrdersNo(userPackageOrder.getOrdersNo());
userPackage.setCreateTime(DateUtils.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());
userPackage.setClassifyId(massagePackage.getClassifyId());
userPackage.setLevel(massagePackage.getLevel());
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(DateUtils.format(new Date()));
upd.setLevel(massagePackage.getLevel());
int serviceCount = upd.getServiceCount();
for(int k=0;k<serviceCount;k++){
userPackageDetailService.insert(upd);
updateMassageSale(upd.getMassageTypeId());
}
}
}
}
}
}
}
//完成团购
UserPackageOrder packageOrder = new UserPackageOrder();
packageOrder.setGroupNo(orders.getGroupNo());
packageOrder.setStatus(1);
baseMapper.updateStatus(packageOrder);
//修改团购销量
int sales = massagePackage.getSales();
sales = sales+1;
massagePackage.setSales(sales);
massagePackageService.updateSales(massagePackage);
}
} catch (Exception e) {
e.printStackTrace();
log.error("钱包支付服务包订单异常:" + e.getMessage(), e);
return Result.error("钱包支付服务包订单异常!");
}
return Result.success();
}
@Override
@Transactional
public Result insertFlashOrders(UserPackageOrder userPackageOrder){
try {
Long userId = userPackageOrder.getUserId();
String startTimeStr = userPackageOrder.getStartTime();
String endTimeStr = userPackageOrder.getEndTime();
int isNewer = userPackageOrder.getIsNewer();
Date startTime = DateUtils.stringToDate(startTimeStr,"yyyy-MM-dd HH:mm:ss");
Date endTime = DateUtils.stringToDate(endTimeStr,"yyyy-MM-dd HH:mm:ss");
if(startTime.getTime()>System.currentTimeMillis()){
return Result.error("限时秒杀还未开始,请稍后重试!");
}
if(endTime.getTime()<System.currentTimeMillis()){
return Result.error("限时秒杀已结束,无法进行限时秒杀!");
}
if(isNewer == 1){
//只限新用户
UserEntity user = userService.selectUserById(userId);
String createTimeStr = user.getCreateTime();
Date createTime = DateUtils.addDateDays(DateUtils.stringToDate(createTimeStr,"yyyy-MM-dd HH:mm:ss"),7);
if(createTime.getTime()<System.currentTimeMillis()){
return Result.error("该限时秒杀只限新用户,请选择其他限时秒杀!");
}
}
BigDecimal canCouponMoney = BigDecimal.ZERO;//当可用代金券时的金额
BigDecimal canVipMoney = BigDecimal.ZERO;//当可用vip时的金额
BigDecimal totalMoney = BigDecimal.ZERO;//总金额
List<Long> classifyIdArr = Lists.newArrayList();
List<UserPackageOrdersMapping> ordersPackageList = userPackageOrder.getOrdersPackageList();
for (UserPackageOrdersMapping ordersPackage : ordersPackageList) {
MassagePackage massagePackage = massagePackageService.getById(ordersPackage.getPackageId());
BigDecimal sum = massagePackage.getPrice().multiply(new BigDecimal(ordersPackage.getNum()));
sum = sum.setScale(0,BigDecimal.ROUND_UP);
if(massagePackage.getIsCanCoupon() == 1){
canCouponMoney = canCouponMoney.add(sum);
}
if(massagePackage.getIsCanVip() == 1){
canVipMoney = canVipMoney.add(sum);
}
totalMoney = totalMoney.add(sum);
Long classifyId = massagePackage.getClassifyId();
classifyIdArr.add(classifyId);
}
BigDecimal couponMinMoney = BigDecimal.ZERO;//所有代金券的使用额度总和
List<CouponUser> CouponUserList = Lists.newArrayList();
String couponIds = userPackageOrder.getCouponId();
if(couponIds!=null && couponIds.length()>0){
if(canCouponMoney.compareTo(BigDecimal.ZERO)==0){
return Result.error("此次限时秒杀不支持优惠券!");
}
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("优惠券已被使用!");
}
if(couponUser.getClassifyId()!=0){
if(!classifyIdArr.contains(couponUser.getClassifyId())){
return Result.error("优惠券不满足使用条件!");
}
}
couponMinMoney = couponMinMoney.add(couponUser.getMinMoney());
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(canCouponMoney.compareTo(couponMinMoney) < 0){
return Result.error("当前应付总金额不满足优惠券使用的最小额度,请重新选择优惠券!");
}
//获取用户VIP的优惠信息
BigDecimal vipRate = new BigDecimal(100);
//服务包支持vip时获取vip优惠比例
if(canVipMoney.compareTo(BigDecimal.ZERO)>0) {
UserVip userVip = userVipService.selectUserVipByUserId(userPackageOrder.getUserId());
if (userVip != null) {
if (userVip.getIsVip() == 1) {
//获取用户到期时间
Date date = DateUtils.stringToDate(userVip.getEndTime(),"yyyy-MM-dd HH:mm:ss");
if (date.getTime() >= System.currentTimeMillis()) {
VipDetails vipDetails = vipDetailsDao.selectOne(new QueryWrapper<VipDetails>().eq("vip_name_type", userVip.getVipNameType()));
if (vipDetails != null) {
vipRate = vipDetails.getRate();
}
}
}
}
}
userPackageOrder.setVipRate(vipRate);
BigDecimal vipMoney = canVipMoney;
BigDecimal unCanVipMoney = totalMoney.subtract(canVipMoney);//非会员优惠金额
canVipMoney = canVipMoney.multiply(userPackageOrder.getVipRate()).divide(new BigDecimal(100));//对可用vip的金额进行优惠
canVipMoney = canVipMoney.setScale(0,BigDecimal.ROUND_UP);
BigDecimal vipReductionMoney = vipMoney.subtract(canVipMoney);
userPackageOrder.setVipReductionMoney(vipReductionMoney);//会员减免金额
totalMoney = canVipMoney.add(unCanVipMoney);//优惠后的总金额
totalMoney = totalMoney.subtract(userPackageOrder.getCouponMoney());//减去优惠券额度后的总金额
userPackageOrder.setPayMoney(totalMoney);
userPackageOrder.setCreateTime(DateUtils.format(new Date()));
userPackageOrder.setStatus(0);
userPackageOrder.setOrdersNo(getGeneralOrder());
//插入订单表
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));
}
userPackageOrder.setCouponUserList(CouponUserList);
}
//插入用户-服务包-订单-服务包与订单映射关系表
for (UserPackageOrdersMapping ordersPackage : ordersPackageList) {
ordersPackage.setOrdersId(ordersId);
userPackageOrdersMappingService.insert(ordersPackage);
}
} catch (Exception e) {
e.printStackTrace();
log.error("添加订单异常" + e.getMessage(), e);
}
return Result.success().put("data", userPackageOrder);
}
/**
* 每5分钟自动扫描未支付订单进行取消释放代金券
@ -428,6 +920,88 @@ public class UserPackageOrderServiceImpl extends ServiceImpl<UserPackageOrderDao
}
}
/**
* 每5分钟自动扫描未成团的订单进行退款释放代金券
*/
@Scheduled(cron = "0 0/5 * * * ?")
public void autoRefundGroupOrders() {
List<UserPackageOrder> ordersList = baseMapper.getUnGroupOrderList();
for (UserPackageOrder orders : ordersList) {
BigDecimal userMoney = orders.getPayMoney();
//取消订单
orders.setStatus(2);//取消状态
orders.setRefundTime(DateUtils.format(new Date()));//取消时间
orders.setRefundMoney(userMoney);
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);
}
}
}
}
}
UserMoneyDetails userMoneyDetails = new UserMoneyDetails();
if (orders.getPayWay() == 1 || orders.getPayWay() == 2 || orders.getPayWay() == 3 || orders.getPayWay() == 4) {
if(userMoney.compareTo(BigDecimal.ZERO) > 0){
boolean refund = wxService.refund(orders.getOrdersNo(), orders.getPayMoney(), userMoney, orders.getPayWay());
if (!refund) {
log.error("订单号:"+orders.getOrdersNo()+"团购订单支付宝退款失败!");
continue;
}
}
userMoneyDetails.setManipulateType(1);
userMoneyDetails.setBlFlag(2);
} else if (orders.getPayWay() == 6) {
if(userMoney.compareTo(BigDecimal.ZERO) > 0) {
String data = aliPayController.alipayRefund(orders.getOrdersNo(), userMoney);
if (StringUtils.isNotBlank(data)) {
log.error(data);
JSONObject jsonObject = JSON.parseObject(data);
JSONObject alipay_trade_refund_response = jsonObject.getJSONObject("alipay_trade_refund_response");
String code1 = alipay_trade_refund_response.getString("code");
if (!"10000".equals(code1)) {
log.error("订单号:"+orders.getOrdersNo()+"团购订单微信退款失败!");
continue;
}
} else {
log.error("订单号:"+orders.getOrdersNo()+"团购订单微信退款失败!");
continue;
}
}
userMoneyDetails.setManipulateType(1);
userMoneyDetails.setBlFlag(2);
} else {
userMoneyService.updateMoney(1, orders.getUserId(), userMoney.doubleValue());
//查询用户当前余额
UserMoney userNowMoney = userMoneyService.selectUserMoneyByUserId(orders.getUserId());
//插入余额
userMoneyDetails.setBalance(userNowMoney.getMoney());
//插入操作类型为已操作用户余额
userMoneyDetails.setManipulateType(2);
userMoneyDetails.setBlFlag(1);
}
userMoneyDetails.setMoney(userMoney);
userMoneyDetails.setUserId(orders.getUserId());
userMoneyDetails.setContent("订单号:" + orders.getOrdersNo() + ",已原路退款!");
userMoneyDetails.setTitle("团购订单退款");
userMoneyDetails.setType(1);
userMoneyDetails.setState(2);
userMoneyDetails.setCreateTime(DateUtils.format(new Date()));
userMoneyDetails.setBlRole(1);
userMoneyDetailsService.save(userMoneyDetails);
}
}
public String getGeneralOrder() {
Date date = new Date();
String newString = String.format("%0" + 4 + "d", (int) ((Math.random() * 9 + 1) * 1000));
@ -436,4 +1010,12 @@ public class UserPackageOrderServiceImpl extends ServiceImpl<UserPackageOrderDao
return format + newString;
}
public String getGeneralGroupNo() {
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 "G"+format + newString;
}
}

View File

@ -21,9 +21,13 @@ public class UserPackageOrdersMappingServiceImpl extends ServiceImpl<UserPackage
return baseMapper.findListByOrdersId(ordersId);
}
@Override
public int insert(UserPackageOrdersMapping userPackageOrdersMapping){
return baseMapper.insert(userPackageOrdersMapping);
}
@Override
public int deleteByOrdersId(Long ordersId){
return baseMapper.deleteByOrdersId(ordersId);
}
}

View File

@ -50,4 +50,16 @@ public class UserPackageServiceImpl extends ServiceImpl<UserPackageDao, UserPack
return baseMapper.getMyPackageById(id);
}
@Override
public int deletePackageByOrders(Long ordersId){
return baseMapper.deletePackageByOrders(ordersId);
}
@Override
public List<UserPackage> findList(Long ordersId){
UserPackage userPackage = new UserPackage();
userPackage.setOrdersId(ordersId);
return baseMapper.findList(userPackage);
}
}

View File

@ -1081,7 +1081,7 @@ public class AliPayController {
userMoneyDetails.setBlFlag(1);
userMoneyDetailsService.save(userMoneyDetails);
orders.setStatus(2);
orders.setStatus(1);
orders.setPayWay(payDetails.getClassify());
orders.setPayTime(sdf.format(new Date()));
userPackageOrderDao.updateStatus(orders);
@ -1138,6 +1138,112 @@ public class AliPayController {
}
}
}
}else if(payDetails.getType()==8) {
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(4);//拼团中
orders.setPayWay(payDetails.getClassify());
orders.setPayTime(sdf.format(new Date()));
userPackageOrderDao.updateStatus(orders);
//获取支付已支付的数量是否满足此次团购人数是则完成此次拼团并将商品发送给客户
int buyGroupNum = 0;
int groupNum = 0;
List<UserPackageOrder> list = userPackageOrderDao.getActivityOrderListByGroupNo(orders.getGroupNo(),null);
if(list.size()>0){
for(UserPackageOrder userPackageOrder : list) {
if (userPackageOrder.getStatus().equals(1) || userPackageOrder.getStatus().equals(4)) {
buyGroupNum++;
}
}
}
MassagePackage massagePackage = null;
List<UserPackageOrdersMapping> mappingList = userPackageOrdersMappingService.findListByOrdersId(orders.getOrdersId());
if(mappingList.size()>0){
Long packageId = mappingList.get(0).getPackageId();
massagePackage = massagePackageService.getById(packageId);
groupNum = massagePackage.getGroupNum();
}
if(buyGroupNum>0 && groupNum>0 && buyGroupNum>=groupNum){
for(UserPackageOrder userPackageOrder : list) {
if (userPackageOrder.getStatus().equals(1) || userPackageOrder.getStatus().equals(4)) {
//删除单据防止重复数据
List<UserPackage> userPackageList = userPackageService.findList(userPackageOrder.getOrdersId());
if(userPackageList.size()>0){
for(UserPackage userPackage : userPackageList){
userPackageService.removeById(userPackage.getId());
userPackageDetailService.deleteDetailByMain(userPackage.getId());
}
}
//插入单据
List<UserPackageOrdersMapping> packageOrderMappingList = userPackageOrdersMappingService.findListByOrdersId(userPackageOrder.getOrdersId());
for (UserPackageOrdersMapping ordersPackage : packageOrderMappingList) {
int quantity = ordersPackage.getNum();
for(int i=0;i<quantity;i++){
//拆分插入用户团购
UserPackage userPackage = new UserPackage();
userPackage.setUserId(userPackageOrder.getUserId());
userPackage.setPackageId(massagePackage.getId());
userPackage.setOrdersId(userPackageOrder.getOrdersId());
userPackage.setOrdersNo(userPackageOrder.getOrdersNo());
userPackage.setCreateTime(DateUtils.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());
userPackage.setClassifyId(massagePackage.getClassifyId());
userPackage.setLevel(massagePackage.getLevel());
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(DateUtils.format(new Date()));
upd.setLevel(massagePackage.getLevel());
int serviceCount = upd.getServiceCount();
for(int k=0;k<serviceCount;k++){
userPackageDetailService.insert(upd);
MassageType massageType = massageTypeService.getById(upd.getMassageTypeId());
massageType.setSales(massageType.getSales()+1);
massageTypeService.updateById(massageType);
}
}
}
}
}
}
}
//完成团购
UserPackageOrder packageOrder = new UserPackageOrder();
packageOrder.setGroupNo(orders.getGroupNo());
packageOrder.setStatus(1);
userPackageOrderDao.updateStatus(packageOrder);
//修改团购销量
int sales = massagePackage.getSales();
sales = sales+1;
massagePackage.setSales(sales);
massagePackageService.updateSales(massagePackage);
}
}
}
} else {
@ -1580,7 +1686,7 @@ public class AliPayController {
}
@Login
@ApiOperation("支付宝支付订单")
@ApiOperation("支付宝支付套餐订单")
@RequestMapping(value = "/payPackageOrder", method = RequestMethod.POST)
@Transactional(rollbackFor = Exception.class)
public Result payPackageOrder(Long ordersId, Integer type) {
@ -1592,7 +1698,7 @@ public class AliPayController {
}else if(orders.getStatus()==2){
return Result.error("订单已退款!");
}else if(orders.getStatus()==3){
return Result.error("订单支付超时,请发起支付");
return Result.error("订单支付超时,请重新发起购买");
}
//通知页面地址
@ -1625,6 +1731,52 @@ public class AliPayController {
return Result.success();
}
@Login
@ApiOperation("支付宝支付团购订单")
@RequestMapping(value = "/payGroupOrders", method = RequestMethod.POST)
@Transactional(rollbackFor = Exception.class)
public Result payGroupOrders(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(8);
payDetailsDao.insert(payDetails);
}else{
payDetails1.setClassify(6);
payDetails1.setType(8);
payDetailsDao.updateById(payDetails1);
}
// if (type == 1) {
// return payApp(name, orders.getOrdersNo(), orders.getPayMoney().doubleValue());
// } else {
// return payH5(name, orders.getOrdersNo(), orders.getPayMoney().doubleValue(), returnUrl);
// }
payOrderResult(orders.getOrdersNo());
return Result.success();
}
@Login
@ApiOperation("支付宝支付订单")
@RequestMapping(value = "/payOrderCashDeposit", method = RequestMethod.POST)
@ -2266,7 +2418,7 @@ public class AliPayController {
userMoneyDetails.setBlFlag(1);
userMoneyDetailsService.save(userMoneyDetails);
orders.setStatus(2);
orders.setStatus(1);
orders.setPayWay(payDetails.getClassify());
orders.setPayTime(sdf.format(new Date()));
userPackageOrderDao.updateStatus(orders);
@ -2323,6 +2475,112 @@ public class AliPayController {
}
}
}
}else if(payDetails.getType()==8) {
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(4);//拼团中
orders.setPayWay(payDetails.getClassify());
orders.setPayTime(sdf.format(new Date()));
userPackageOrderDao.updateStatus(orders);
//获取支付已支付的数量是否满足此次团购人数是则完成此次拼团并将商品发送给客户
int buyGroupNum = 0;
int groupNum = 0;
List<UserPackageOrder> list = userPackageOrderDao.getActivityOrderListByGroupNo(orders.getGroupNo(),null);
if(list.size()>0){
for(UserPackageOrder userPackageOrder : list) {
if (userPackageOrder.getStatus().equals(1) || userPackageOrder.getStatus().equals(4)) {
buyGroupNum++;
}
}
}
MassagePackage massagePackage = null;
List<UserPackageOrdersMapping> mappingList = userPackageOrdersMappingService.findListByOrdersId(orders.getOrdersId());
if(mappingList.size()>0){
Long packageId = mappingList.get(0).getPackageId();
massagePackage = massagePackageService.getById(packageId);
groupNum = massagePackage.getGroupNum();
}
if(buyGroupNum>0 && groupNum>0 && buyGroupNum>=groupNum){
for(UserPackageOrder userPackageOrder : list) {
if (userPackageOrder.getStatus().equals(1) || userPackageOrder.getStatus().equals(4)) {
//删除单据防止重复数据
List<UserPackage> userPackageList = userPackageService.findList(userPackageOrder.getOrdersId());
if(userPackageList.size()>0){
for(UserPackage userPackage : userPackageList){
userPackageService.removeById(userPackage.getId());
userPackageDetailService.deleteDetailByMain(userPackage.getId());
}
}
//插入单据
List<UserPackageOrdersMapping> packageOrderMappingList = userPackageOrdersMappingService.findListByOrdersId(userPackageOrder.getOrdersId());
for (UserPackageOrdersMapping ordersPackage : packageOrderMappingList) {
int quantity = ordersPackage.getNum();
for(int i=0;i<quantity;i++){
//拆分插入用户团购
UserPackage userPackage = new UserPackage();
userPackage.setUserId(userPackageOrder.getUserId());
userPackage.setPackageId(massagePackage.getId());
userPackage.setOrdersId(userPackageOrder.getOrdersId());
userPackage.setOrdersNo(userPackageOrder.getOrdersNo());
userPackage.setCreateTime(DateUtils.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());
userPackage.setClassifyId(massagePackage.getClassifyId());
userPackage.setLevel(massagePackage.getLevel());
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(DateUtils.format(new Date()));
upd.setLevel(massagePackage.getLevel());
int serviceCount = upd.getServiceCount();
for(int k=0;k<serviceCount;k++){
userPackageDetailService.insert(upd);
MassageType massageType = massageTypeService.getById(upd.getMassageTypeId());
massageType.setSales(massageType.getSales()+1);
massageTypeService.updateById(massageType);
}
}
}
}
}
}
}
//完成团购
UserPackageOrder packageOrder = new UserPackageOrder();
packageOrder.setGroupNo(orders.getGroupNo());
packageOrder.setStatus(1);
userPackageOrderDao.updateStatus(packageOrder);
//修改团购销量
int sales = massagePackage.getSales();
sales = sales+1;
massagePackage.setSales(sales);
massagePackageService.updateSales(massagePackage);
}
}
}
}

View File

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

View File

@ -20,6 +20,8 @@ public interface WxService {
Result payPackageOrder(Long id, Integer classify,HttpServletRequest request) throws Exception;
Result payGroupOrders(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;

View File

@ -688,7 +688,7 @@ public class WxServiceImpl implements WxService {
}else if(orders.getStatus()==2){
return Result.error("订单已退款!");
}else if(orders.getStatus()==3){
return Result.error("订单支付超时,请发起支付");
return Result.error("订单支付超时,请重新发起购买");
}
PayDetails payDetails1 = payDetailsDao.selectByOrderId(orders.getOrdersNo());
@ -713,6 +713,41 @@ public class WxServiceImpl implements WxService {
return Result.success();
}
@Override
public Result payGroupOrders(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(8);
payDetailsDao.insert(payDetails);
} else {
payDetails1.setClassify(classify);
payDetails1.setType(8);
payDetailsDao.updateById(payDetails1);
}
// return pay(orders.getPayMoney().doubleValue(), classify, orders.getUserId(), orders.getOrdersNo(),request);
payOrderResult(orders.getOrdersNo());
return Result.success();
}
private Result payPackageOrderResult(String ordersNo,Integer classify){
Orders orders = ordersService.selectOrdersByOrderNo(ordersNo);
if(orders.getIsSupplement() != null){
@ -1847,7 +1882,7 @@ public class WxServiceImpl implements WxService {
userMoneyDetails.setBlFlag(1);
userMoneyDetailsService.save(userMoneyDetails);
orders.setStatus(2);
orders.setStatus(1);
orders.setPayWay(payDetails.getClassify());
orders.setPayTime(sdf.format(new Date()));
userPackageOrderDao.updateStatus(orders);
@ -1904,6 +1939,114 @@ public class WxServiceImpl implements WxService {
}
}
}
}else if(payDetails.getType()==8) {
//服务包下单分单
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(4);//团购中
orders.setPayWay(payDetails.getClassify());
orders.setPayTime(sdf.format(new Date()));
userPackageOrderDao.updateStatus(orders);
//获取支付已支付的数量是否满足此次团购人数是则完成此次拼团并将商品发送给客户
int buyGroupNum = 0;
int groupNum = 0;
List<UserPackageOrder> list = userPackageOrderDao.getActivityOrderListByGroupNo(orders.getGroupNo(),null);
if(list.size()>0){
for(UserPackageOrder userPackageOrder : list) {
if (userPackageOrder.getStatus().equals(1) || userPackageOrder.getStatus().equals(4)) {
buyGroupNum++;
}
}
}
MassagePackage massagePackage = null;
List<UserPackageOrdersMapping> mappingList = userPackageOrdersMappingService.findListByOrdersId(orders.getOrdersId());
if(mappingList.size()>0){
Long packageId = mappingList.get(0).getPackageId();
massagePackage = massagePackageService.getById(packageId);
groupNum = massagePackage.getGroupNum();
}
if(buyGroupNum>0 && groupNum>0 && buyGroupNum>=groupNum){
for(UserPackageOrder userPackageOrder : list) {
if (userPackageOrder.getStatus().equals(1) || userPackageOrder.getStatus().equals(4)) {
//删除单据防止重复数据
List<UserPackage> userPackageList = userPackageService.findList(userPackageOrder.getOrdersId());
if(userPackageList.size()>0){
for(UserPackage userPackage : userPackageList){
userPackageService.removeById(userPackage.getId());
userPackageDetailService.deleteDetailByMain(userPackage.getId());
}
}
//插入单据
List<UserPackageOrdersMapping> packageOrderMappingList = userPackageOrdersMappingService.findListByOrdersId(userPackageOrder.getOrdersId());
for (UserPackageOrdersMapping ordersPackage : packageOrderMappingList) {
int quantity = ordersPackage.getNum();
for(int i=0;i<quantity;i++){
//拆分插入用户团购
UserPackage userPackage = new UserPackage();
userPackage.setUserId(userPackageOrder.getUserId());
userPackage.setPackageId(massagePackage.getId());
userPackage.setOrdersId(userPackageOrder.getOrdersId());
userPackage.setOrdersNo(userPackageOrder.getOrdersNo());
userPackage.setCreateTime(DateUtils.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());
userPackage.setClassifyId(massagePackage.getClassifyId());
userPackage.setLevel(massagePackage.getLevel());
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(DateUtils.format(new Date()));
upd.setLevel(massagePackage.getLevel());
int serviceCount = upd.getServiceCount();
for(int k=0;k<serviceCount;k++){
userPackageDetailService.insert(upd);
MassageType massageType = massageTypeService.getById(upd.getMassageTypeId());
massageType.setSales(massageType.getSales()+1);
massageTypeService.updateById(massageType);
}
}
}
}
}
}
}
//完成团购
UserPackageOrder packageOrder = new UserPackageOrder();
packageOrder.setGroupNo(orders.getGroupNo());
packageOrder.setStatus(1);
userPackageOrderDao.updateStatus(packageOrder);
//修改团购销量
int sales = massagePackage.getSales();
sales = sales+1;
massagePackage.setSales(sales);
massagePackageService.updateSales(massagePackage);
}
}
}
System.err.println("微信手机支付回调成功订单号:" + out_trade_no + "");
@ -2495,7 +2638,7 @@ public class WxServiceImpl implements WxService {
userMoneyDetails.setBlFlag(1);
userMoneyDetailsService.save(userMoneyDetails);
orders.setStatus(2);
orders.setStatus(1);
orders.setPayWay(payDetails.getClassify());
orders.setPayTime(sdf.format(new Date()));
userPackageOrderDao.updateStatus(orders);
@ -2552,6 +2695,114 @@ public class WxServiceImpl implements WxService {
}
}
}
}else if(payDetails.getType()==8) {
//服务包下单分单
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(4);//团购中
orders.setPayWay(payDetails.getClassify());
orders.setPayTime(sdf.format(new Date()));
userPackageOrderDao.updateStatus(orders);
//获取支付已支付的数量是否满足此次团购人数是则完成此次拼团并将商品发送给客户
int buyGroupNum = 0;
int groupNum = 0;
List<UserPackageOrder> list = userPackageOrderDao.getActivityOrderListByGroupNo(orders.getGroupNo(),null);
if(list.size()>0){
for(UserPackageOrder userPackageOrder : list) {
if (userPackageOrder.getStatus().equals(1) || userPackageOrder.getStatus().equals(4)) {
buyGroupNum++;
}
}
}
MassagePackage massagePackage = null;
List<UserPackageOrdersMapping> mappingList = userPackageOrdersMappingService.findListByOrdersId(orders.getOrdersId());
if(mappingList.size()>0){
Long packageId = mappingList.get(0).getPackageId();
massagePackage = massagePackageService.getById(packageId);
groupNum = massagePackage.getGroupNum();
}
if(buyGroupNum>0 && groupNum>0 && buyGroupNum>=groupNum){
for(UserPackageOrder userPackageOrder : list) {
if (userPackageOrder.getStatus().equals(1) || userPackageOrder.getStatus().equals(4)) {
//删除单据防止重复数据
List<UserPackage> userPackageList = userPackageService.findList(userPackageOrder.getOrdersId());
if(userPackageList.size()>0){
for(UserPackage userPackage : userPackageList){
userPackageService.removeById(userPackage.getId());
userPackageDetailService.deleteDetailByMain(userPackage.getId());
}
}
//插入单据
List<UserPackageOrdersMapping> packageOrderMappingList = userPackageOrdersMappingService.findListByOrdersId(userPackageOrder.getOrdersId());
for (UserPackageOrdersMapping ordersPackage : packageOrderMappingList) {
int quantity = ordersPackage.getNum();
for(int i=0;i<quantity;i++){
//拆分插入用户团购
UserPackage userPackage = new UserPackage();
userPackage.setUserId(userPackageOrder.getUserId());
userPackage.setPackageId(massagePackage.getId());
userPackage.setOrdersId(userPackageOrder.getOrdersId());
userPackage.setOrdersNo(userPackageOrder.getOrdersNo());
userPackage.setCreateTime(DateUtils.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());
userPackage.setClassifyId(massagePackage.getClassifyId());
userPackage.setLevel(massagePackage.getLevel());
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(DateUtils.format(new Date()));
upd.setLevel(massagePackage.getLevel());
int serviceCount = upd.getServiceCount();
for(int k=0;k<serviceCount;k++){
userPackageDetailService.insert(upd);
MassageType massageType = massageTypeService.getById(upd.getMassageTypeId());
massageType.setSales(massageType.getSales()+1);
massageTypeService.updateById(massageType);
}
}
}
}
}
}
}
//完成团购
UserPackageOrder packageOrder = new UserPackageOrder();
packageOrder.setGroupNo(orders.getGroupNo());
packageOrder.setStatus(1);
userPackageOrderDao.updateStatus(packageOrder);
//修改团购销量
int sales = massagePackage.getSales();
sales = sales+1;
massagePackage.setSales(sales);
massagePackageService.updateSales(massagePackage);
}
}
}
System.err.println("微信手机支付回调成功订单号:" + out_trade_no + "");

View File

@ -11,7 +11,7 @@
where d.main_id = m.id
) as service_count
from bl_massage_package m
where 1=1
where is_activity = #{params.isActivity}
<if test="params.status!=null and params.status!=0">
and m.status=#{params.status}
</if>
@ -73,6 +73,7 @@
from bl_massage_package a
left join sys_dict b on a.type = b.id
where a.status = 1
and a.is_activity = 0
<if test="params.city!=null and params.city!=''">
and (a.city like concat('%',#{params.city},'%') or a.city='不限')
</if>
@ -94,5 +95,95 @@
order by sales desc,id asc
</select>
<select id="findAppActivityPage" resultType="com.sqx.modules.bl.massage.entity.MassagePackage">
select
a.id,
a.type,
d.value as type_name,
a.price,
a.old_price as oldPrice,
a.title,
a.package_img as packageImg,
a.content,
a.content_img as contentImg,
a.sales,
a.labels,
a.city,
a.is_can_coupon as isCanCoupon,
a.is_can_vip as isCanVip,
a.classify_id as classifyId,
c.value as classifyName,
a.level,
a.group_num as groupNum,
0 as buyGroupNum,
a.start_time as startTime,
a.end_time as endTime,
a.is_newer as isNewer,
m.duration,
m.is_sex as isSex,
m.apply_people as applyPeople,
m.jianjie
from bl_massage_package a
inner join bl_massage_package_detail b on b.main_id = a.id
left join massage_type m on b.massage_type_id = m.massage_type_id
left join sys_dict c on a.classify_id = c.id
left join sys_dict d on a.type = d.id
where a.is_activity = 1
and a.status = 1
<if test="params.startTime!=null and params.startTime!=''">
and a.start_time &lt;= #{params.startTime}
and a.end_time >= #{params.startTime}
</if>
<if test="params.type!=null and params.type!=''">
and a.type=#{params.type}
</if>
<if test="params.level!=null and params.level!=''">
and a.level=#{params.level}
</if>
<if test="params.classifyId!=null and params.classifyId!=''">
and a.classify_id=#{params.classifyId}
</if>
<if test="params.city!=null and params.city!=''">
and (a.city like concat('%',#{params.city},'%') or a.city='不限')
</if>
<if test="params.title!=null and params.title!=''">
and a.title like concat('%',#{params.title},'%')
</if>
order by a.is_newer desc,a.price asc,a.id desc
</select>
<select id="getAppActivityDetail" resultType="com.sqx.modules.bl.massage.entity.MassagePackage">
select
a.id,
a.price,
a.old_price as oldPrice,
a.title,
a.package_img as packageImg,
a.content,
a.content_img as contentImg,
a.sales,
a.labels,
a.city,
a.is_can_coupon as isCanCoupon,
a.is_can_vip as isCanVip,
a.classify_id as classifyId,
d.value as classifyName,
a.level,
a.group_num as groupNum,
0 as buyGroupNum,
a.start_time as startTime,
a.end_time as endTime,
a.is_newer as isNewer,
m.duration,
m.is_sex as isSex,
m.apply_people as applyPeople,
m.jianjie
from bl_massage_package a
inner join bl_massage_package_detail b on b.main_id = a.id
left join massage_type m on b.massage_type_id = m.massage_type_id
left join sys_dict d on a.classify_id = d.id
where a.id = #{id}
limit 1
</select>
</mapper>

View File

@ -156,4 +156,9 @@
where a.id = #{id}
</select>
<update id="deletePackageByOrders">
DELETE FROM bl_user_package
WHERE orders_id = #{ordersId}
</update>
</mapper>

View File

@ -218,5 +218,9 @@
where a.main_id = #{mainId}
</select>
<update id="deleteDetailByMain">
DELETE FROM bl_user_package_detail
WHERE main_id = #{mainId}
</update>
</mapper>

View File

@ -10,6 +10,7 @@
a.user_id,
b.user_name,
a.vip_rate,
a.vip_reduction_money,
a.old_sum_money,
a.sum_money,
a.pay_money,
@ -40,6 +41,7 @@
a.user_id,
b.user_name,
a.vip_rate,
a.vip_reduction_money,
a.old_sum_money,
a.sum_money,
a.pay_money,
@ -63,6 +65,7 @@
a.user_id,
b.user_name,
a.vip_rate,
a.vip_reduction_money,
a.old_sum_money,
a.sum_money,
a.pay_money,
@ -109,6 +112,9 @@
<if test="null != vipRate ">
vip_rate,
</if>
<if test="null != vipReductionMoney ">
vip_reduction_money,
</if>
<if test="null != oldSumMoney ">
old_sum_money,
</if>
@ -150,6 +156,9 @@
<if test="null != vipRate ">
#{vipRate},
</if>
<if test="null != vipReductionMoney ">
#{vipReductionMoney},
</if>
<if test="null != oldSumMoney ">
#{oldSumMoney},
</if>
@ -198,6 +207,7 @@
a.orders_no,
a.user_id,
a.vip_rate,
a.vip_reduction_money,
a.old_sum_money,
a.sum_money,
a.pay_money,
@ -223,4 +233,40 @@
where orders_id = #{ordersId}
</update>
<select id="getActivityOrderList" resultType="com.sqx.modules.bl.order.entity.UserPackageOrder">
select count(a.user_id) as lessNum,a.group_no
from bl_user_package_order a
inner join bl_user_package_order_mapping b on a.orders_id = b.orders_id
where a.status = #{status}
and b.package_id = #{id}
group by a.group_no
order by a.group_no desc
</select>
<select id="getActivityOrderListByGroupNo" resultType="com.sqx.modules.bl.order.entity.UserPackageOrder">
select a.*
from bl_user_package_order a
where a.group_no = #{groupNo}
<if test="null != userId ">
a.user_id = #{userId}
</if>
order by a.orders_id desc
</select>
<update id="updateStatusByGroupNo">
update bl_user_package_order
set status = #{status}
where group_no = #{groupNo}
</update>
<select id="getUnGroupOrderList" resultType="com.sqx.modules.bl.order.entity.UserPackageOrder">
select a.*
from bl_user_package_order a
inner join bl_user_package_order_mapping b on a.orders_id = b.orders_id
inner join bl_massage_package c on b.package_id = c.id
where a.status = 4
and c.end_time &lt; date_format(now(), '%Y-%m-%d %H:%i:%s')
order by a.orders_id desc
</select>
</mapper>

View File

@ -61,4 +61,9 @@
)
</insert>
<delete id="deleteByOrdersId">
DELETE FROM bl_user_package_order_mapping
WHERE orders_id = #{ordersId}
</delete>
</mapper>