套餐订单

This commit is contained in:
曹磊 2024-07-01 23:38:31 +08:00
parent 14fb851ab4
commit 30778b143d
16 changed files with 180 additions and 43 deletions

View File

@ -90,22 +90,24 @@ public class AppUserMoneyController {
period.setDetailsType(1);
//获取上一周期的最后一天
period.setStartFundData(periodDate.getStartFundData());
period.setEndFundData(CurrentPeriod);
// period.setEndFundData(CurrentPeriod);
period.setEndFundData(periodDate.getEndFundData());
List<UserMoneyDetails> filteredPersons = userMoneyDetailsService.selectIncome(period);
//进账
Long incomeLong= filteredPersons.stream()
double incomeLong= filteredPersons.stream()
.filter(UserMoneyDetails -> UserMoneyDetails.getType() == 1)
.mapToLong(UserMoneyDetails -> UserMoneyDetails.getMoney().longValue())
.mapToDouble(UserMoneyDetails -> UserMoneyDetails.getMoney().doubleValue())
.sum();
//出账
Long outgoingLong= filteredPersons.stream()
double outgoingLong= filteredPersons.stream()
.filter(UserMoneyDetails -> UserMoneyDetails.getType() == 2)
.filter(UserMoneyDetails -> !UserMoneyDetails.getContent().contains("管理端减少"))
.mapToLong(UserMoneyDetails -> UserMoneyDetails.getMoney().longValue())
.mapToDouble(UserMoneyDetails -> UserMoneyDetails.getMoney().doubleValue())
.sum();
BigDecimal income = new BigDecimal(incomeLong);
BigDecimal outgoing = new BigDecimal(outgoingLong);
BigDecimal balance = income.subtract(outgoing);
BigDecimal income = BigDecimal.valueOf(incomeLong).setScale(2,BigDecimal.ROUND_HALF_UP);
BigDecimal outgoing = BigDecimal.valueOf(outgoingLong).setScale(2,BigDecimal.ROUND_HALF_UP);
BigDecimal balance = income.subtract(outgoing).setScale(2,BigDecimal.ROUND_HALF_UP);
// BigDecimal ktxje = userMoney.getMoney().subtract(balance);
if(balance.compareTo(BigDecimal.ZERO) < 0){

View File

@ -334,6 +334,12 @@ public class Orders implements Serializable {
*/
private Long userPackageDetailId;
/**
* 服务包类型
*/
@TableField(exist = false)
private Integer packageType;
/**
* 会员优惠比例
*/

View File

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.sqx.modules.bl.order.entity.UserPackageDetail;
import lombok.Data;
import java.io.Serializable;
@ -43,5 +44,8 @@ public class OrdersMassage implements Serializable {
@TableField(exist = false)
private MassageType massageType;
@TableField(exist = false)
private UserPackageDetail userPackageDetail;
public OrdersMassage() {}
}

View File

@ -65,8 +65,6 @@ public class ArtificerServiceImpl extends ServiceImpl<ArtificerDao, Artificer> i
@Autowired
private CommonInfoDao commonInfoDao;
@Override
public Result selectArtificerList(Integer page, Integer limit, Long massageTypeId,String artificerName,
String longitude,String latitude,Integer sort,Integer authentication,
@ -635,6 +633,11 @@ public class ArtificerServiceImpl extends ServiceImpl<ArtificerDao, Artificer> i
IPage<Orders> ordersIPage = null;
//当期订单数计算订单发生了按摩行为的订单数订单状态经历了开始服务到订单结束
String currentPeriodOrdersSum = ordersDao.selectOrdersArtificerIntegral(userId, endTime, startTime);
if(currentPeriodOrdersSum.isEmpty() || currentPeriodOrdersSum.equals("0")){
map.put("data",new PageUtils(pages));
map.put("earnings","0");
return Result.success(map);
}
//订单数
BigDecimal currentPeriodOrdersSumBig = new BigDecimal(currentPeriodOrdersSum);
//查询收益

View File

@ -30,6 +30,8 @@ import com.sqx.modules.artificer.dao.ArtificerDao;
import com.sqx.modules.artificer.dao.OrdersDao;
import com.sqx.modules.artificer.entity.*;
import com.sqx.modules.artificer.service.*;
import com.sqx.modules.bl.order.entity.UserPackage;
import com.sqx.modules.bl.order.service.UserPackageService;
import com.sqx.modules.common.dao.CommonInfoDao;
import com.sqx.modules.bl.order.entity.UserPackageDetail;
import com.sqx.modules.bl.order.service.UserPackageDetailService;
@ -139,7 +141,9 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
@Autowired
private ArtificerDao artificerDao;
@Autowired
UserPackageDetailService userPackageDetailService;
private UserPackageDetailService userPackageDetailService;
@Autowired
private UserPackageService userPackageService;
@Autowired
private MaterialMassageMapper materialMassageMapper;
@Autowired
@ -246,10 +250,10 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
return result;
}
@Override
public Result insertOrders(Orders orders) {
reentrantReadWriteLock.writeLock().lock();
String msg = "";
// reentrantReadWriteLock.writeLock().lock();
Artificer artificer1 = artificerDao.selectOne(Wrappers.<Artificer>lambdaQuery()
.eq(Artificer::getArtificerId, orders.getArtificerId()));
orders.setClassifyId(artificer1.getClassifyId());
@ -264,10 +268,12 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
} catch (Exception e) {
e.printStackTrace();
log.error("添加订单异常" + e.getMessage(), e);
msg = e.getMessage();
} finally {
reentrantReadWriteLock.writeLock().unlock();
// reentrantReadWriteLock.writeLock().unlock();
}
return Result.error("系统繁忙,请稍后再试!");
return Result.error(msg);
// return Result.error("系统繁忙,请稍后再试!");
}
private Result insertMassageOrders(Orders orders) throws Exception{
@ -290,7 +296,7 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
return Result.error("优惠券已被使用!");
}
if(couponUser.getClassifyId()!=0){
if(orders.getClassifyId() != couponUser.getClassifyId()){
if(!orders.getClassifyId() .equals(couponUser.getClassifyId())){
return Result.error("优惠券不满足使用条件!");
}
}
@ -664,6 +670,7 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
orders.setPrice(price);
orders.setEntryName(massageTypeName);
orders.setMassageMoney(payMoney);
orders.setVipRate(new BigDecimal(100));
String value1 = commonInfoService.findOne(395).getValue();
int i = 0;
@ -929,7 +936,8 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
} else {
return Result.error("当前订单没有选择服务项目!");
}
if (massageTypeId != oldOrders.getMassageTypeId()) {
Long oldMassageTypeId = oldOrders.getMassageTypeId();
if (!massageTypeId.equals(oldMassageTypeId)) {
return Result.error("当前订单无法修改服务项目!");
}
Artificer artificer = artificerService.getById(orders.getArtificerId());
@ -1092,7 +1100,7 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
if (StringUtils.isNotBlank(orders.getServeTime()) && !orders.getServeTime().equals(oldOrders.getServeTime())) {
return Result.error("当前订单无法修改时间!");
}
if (orders.getArtificerId() != null && orders.getArtificerId() != oldOrders.getArtificerId()) {
if (orders.getArtificerId() != null && !orders.getArtificerId().equals(oldOrders.getArtificerId())) {
return Result.error("当前订单无法修改技师!");
}
if (oldOrders.getParentId() != null && oldOrders.getParentId() != 0) {
@ -1236,7 +1244,7 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
return Result.error("服务时间不能晚于当前时间!");
}
if (oldOrders.getUserPackageDetailId() != null) {
if (massageTypeId != oldOrders.getUserPackageDetailId()) {
if (!massageTypeId.equals(oldOrders.getUserPackageDetailId()) ) {
return Result.error("当前套餐类订单无法修改项目!");
}
UserPackageDetail userPackageDetail = userPackageDetailService.getById(massageTypeId);
@ -1444,7 +1452,7 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
return Result.error("优惠券已被使用!");
}
if (couponUser.getClassifyId() != 0) {
if (orders.getClassifyId() != couponUser.getClassifyId()) {
if (!orders.getClassifyId().equals(couponUser.getClassifyId())) {
return Result.error("优惠券不满足使用条件!");
}
}
@ -3738,14 +3746,36 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
}
List<OrdersMassage> ordersMassageList = ordersMassageService.list(new QueryWrapper<OrdersMassage>().eq("orders_id", ordersId));
for (OrdersMassage ordersMassage : ordersMassageList) {
ordersMassage.setMassageType(massageTypeService.getById(ordersMassage.getMassageId()));
if(orders.getUserPackageDetailId() !=null){
UserPackageDetail userPackageDetail = userPackageDetailService.getById(ordersMassage.getMassageId());
UserPackage userPackage = userPackageService.getById(userPackageDetail.getMainId());
orders.setPackageType(userPackage.getType());
userPackageDetail.setMainTitle(userPackage.getTitle());
userPackageDetail.setMainPrice(userPackage.getPrice());
ordersMassage.setUserPackageDetail(userPackageDetail);
}else{
ordersMassage.setMassageType(massageTypeService.getById(ordersMassage.getMassageId()));
}
}
orders.setOrdersMassageList(ordersMassageList);
List<OrdersMassage> oldOrdersMassageList = ordersMassageService.list(new QueryWrapper<OrdersMassage>().eq("orders_id", orders.getOldOrdersId()));
for (OrdersMassage ordersMassage : oldOrdersMassageList) {
ordersMassage.setMassageType(massageTypeService.getById(ordersMassage.getMassageId()));
if(orders.getOldOrdersId()!=null){
Orders oldOrders = baseMapper.selectById(orders.getOldOrdersId());
List<OrdersMassage> oldOrdersMassageList = ordersMassageService.list(new QueryWrapper<OrdersMassage>().eq("orders_id", orders.getOldOrdersId()));
for (OrdersMassage ordersMassage : oldOrdersMassageList) {
if(oldOrders.getUserPackageDetailId() !=null){
UserPackageDetail userPackageDetail = userPackageDetailService.getById(ordersMassage.getMassageId());
UserPackage userPackage = userPackageService.getById(userPackageDetail.getMainId());
orders.setPackageType(userPackage.getType());
userPackageDetail.setMainTitle(userPackage.getTitle());
userPackageDetail.setMainPrice(userPackage.getPrice());
ordersMassage.setUserPackageDetail(userPackageDetail);
}else{
ordersMassage.setMassageType(massageTypeService.getById(ordersMassage.getMassageId()));
}
}
orders.setOldOrdersMassageList(oldOrdersMassageList);
}
orders.setOldOrdersMassageList(oldOrdersMassageList);
Artificer artificer = artificerService.getById(orders.getArtificerId());
if (artificer != null) {
UserEntity userEntity = userService.selectUserById(artificer.getUserId());
@ -3983,7 +4013,8 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
@Override
public Result payOrders(Long ordersId, Integer type) {
reentrantReadWriteLock.writeLock().lock();
String msg = "";
// reentrantReadWriteLock.writeLock().lock();
try {
Orders orders = baseMapper.selectById(ordersId);
if (orders == null) {
@ -3991,7 +4022,6 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
} else if (orders.getStatus() != 1) {
return Result.error("订单状态异常,请刷新页面后重试!");
}
if(orders.getUserPackageDetailId() !=null ){
//套餐订单
return payPackageOrders(orders,type);
@ -4002,10 +4032,12 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
} catch (Exception e) {
e.printStackTrace();
log.error("钱包支付订单异常:" + e.getMessage(), e);
msg = e.getMessage();
} finally {
reentrantReadWriteLock.writeLock().unlock();
// reentrantReadWriteLock.writeLock().unlock();
}
return Result.error("系统繁忙,请稍后再试!");
return Result.error(msg);
// return Result.error("系统繁忙,请稍后再试!");
}
@ -4030,7 +4062,7 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
if (massageType.getAddNum() == null || massageType.getAddNum() == 0) {
return Result.error("当前项目不允许加钟!");
} else if (massageType.getAddNum() > 0) {
if (orders1.getAddNum() != null && orders1.getAddNum() >= massageType.getAddNum()) {
if (orders1.getAddNum() != null && orders1.getAddNum().intValue() >= massageType.getAddNum().intValue()) {
return Result.error("当前项目已超过最大加钟次数!");
}
}
@ -4350,7 +4382,7 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
if (massageType.getAddNum() == null || massageType.getAddNum() == 0) {
return Result.error("当前项目不允许加钟!");
} else if (massageType.getAddNum() > 0) {
if (orders1.getAddNum() != null && orders1.getAddNum() >= massageType.getAddNum()) {
if (orders1.getAddNum() != null && orders1.getAddNum().intValue() >= massageType.getAddNum().intValue()) {
return Result.error("当前项目已超过最大加钟次数!");
}
}
@ -4851,10 +4883,25 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
//修改项目销量
for (OrdersMassage ordersMassage : ordersMassageList) {
MassageType massageType = massageTypeService.getById(ordersMassage.getMassageId());
int num = massageType.getSales() == null ? 0 : massageType.getSales();
massageType.setSales(num + ordersMassage.getNum());
massageTypeService.updateById(massageType);
if(orders.getUserPackageDetailId() !=null){
UserPackageDetail userPackageDetail = userPackageDetailService.getById(ordersMassage.getMassageId());
MassageType massageType = massageTypeService.getById(userPackageDetail.getMassageTypeId());
int num = massageType.getSales() == null ? 0 : massageType.getSales();
massageType.setSales(num + ordersMassage.getNum());
massageTypeService.updateById(massageType);
UserPackageDetail userPackageDetailUsed = userPackageDetailService.findMassagePackageDetailsUsed(userPackageDetail.getMainId());
if(userPackageDetailUsed.getServiceCount().equals(userPackageDetailUsed.getUsedQuantity())){
UserPackage userPackage = new UserPackage();
userPackage.setStatus(9);
userPackage.setId(userPackageDetail.getMainId());
userPackageService.updateById(userPackage);
}
}else{
MassageType massageType = massageTypeService.getById(ordersMassage.getMassageId());
int num = massageType.getSales() == null ? 0 : massageType.getSales();
massageType.setSales(num + ordersMassage.getNum());
massageTypeService.updateById(massageType);
}
}
//修改技师钱包 1是加 2是减
UserEntity userEntity = userService.selectUserById(artificer.getUserId());
@ -4995,6 +5042,17 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
Orders orders2 = new Orders();
orders2.setStatus(3);
baseMapper.update(orders2,updateWrapper);
//修改加钟销量
if(orders.getAddMassageTypeId() != null){
MassageType addMassageType = massageTypeService.getById(orders.getAddMassageTypeId());
Integer addSales = addMassageType.getSales();
if(addSales == null){
addSales = 0;
}
addSales = addSales + 1;
addMassageType.setSales(addSales);
massageTypeService.updateById(addMassageType);
}
//消息推送
List<String> msgList = new ArrayList<>();
msgList.add(orders.getOrdersNo());
@ -5212,9 +5270,21 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
//修改订单下所有加钟的状态为待评价
UpdateWrapper<Orders> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("parent_id", orders.getOrdersId());
updateWrapper.notIn("status", "1,4");
Orders orders2 = new Orders();
orders2.setStatus(3);
baseMapper.update(orders2,updateWrapper);
//修改加钟销量
if(orders.getAddMassageTypeId() != null){
MassageType addMassageType = massageTypeService.getById(orders.getAddMassageTypeId());
Integer addSales = addMassageType.getSales();
if(addSales == null){
addSales = 0;
}
addSales = addSales + 1;
addMassageType.setSales(addSales);
massageTypeService.updateById(addMassageType);
}
//消息推送
List<String> msgList = new ArrayList<>();
msgList.add(orders.getOrdersNo());

View File

@ -23,4 +23,6 @@ public interface UserPackageDetailDao extends BaseMapper<UserPackageDetail> {
UserPackageDetail getMyPackageDetailNoId(Long mainId,Long massageTypeId);
UserPackageDetail findMassagePackageDetailsUsed(Long mainId);
}

View File

@ -125,6 +125,12 @@ public class UserPackage implements Serializable {
*/
private Integer status;
/**
* 次数
*/
@TableField(exist = false)
private Integer serviceCount;
@TableField(exist = false)
private Integer page;

View File

@ -182,5 +182,11 @@ public class UserPackageDetail implements Serializable {
@TableField(exist = false)
private Integer limit;
@TableField(exist = false)
private String mainTitle;
@TableField(exist = false)
private BigDecimal mainPrice;
public UserPackageDetail() {}
}

View File

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

View File

@ -71,6 +71,8 @@ public class UserPackageDetailServiceImpl extends ServiceImpl<UserPackageDetailD
return Result.success().put("data",userPackageDetail);
}
@Override
public UserPackageDetail findMassagePackageDetailsUsed(Long mainId){
return findMassagePackageDetailsUsed(mainId);
}
}

View File

@ -13,8 +13,10 @@ 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.artificer.entity.Artificer;
import com.sqx.modules.artificer.entity.MassageType;
import com.sqx.modules.artificer.entity.Orders;
import com.sqx.modules.artificer.entity.OrdersMassage;
import com.sqx.modules.artificer.service.MassageTypeService;
import com.sqx.modules.bl.massage.dao.MassagePackageDetailDao;
import com.sqx.modules.bl.massage.entity.MassagePackage;
import com.sqx.modules.bl.massage.entity.MassagePackageDetail;
@ -74,6 +76,9 @@ public class UserPackageOrderServiceImpl extends ServiceImpl<UserPackageOrderDao
@Autowired
MassagePackageDetailDao massagePackageDetailDao;
@Autowired
MassageTypeService massageTypeService;
@Autowired
private CommonInfoService commonInfoService;
@ -358,6 +363,7 @@ public class UserPackageOrderServiceImpl extends ServiceImpl<UserPackageOrderDao
int serviceCount = upd.getServiceCount();
for(int k=0;k<serviceCount;k++){
userPackageDetailService.insert(upd);
updateMassageSale(upd.getMassageTypeId());
}
}
}
@ -370,6 +376,12 @@ public class UserPackageOrderServiceImpl extends ServiceImpl<UserPackageOrderDao
return Result.success();
}
private void updateMassageSale(Long massageTypeId){
MassageType massageType = massageTypeService.getById(massageTypeId);
massageType.setSales(massageType.getSales()+1);
massageTypeService.updateById(massageType);
}
@Override
public Result findUserPackageOrders(UserPackageOrder userPackageOrder){
Page<UserPackageOrder> pages=new Page<>(userPackageOrder.getPage(),userPackageOrder.getLimit());

View File

@ -682,6 +682,9 @@ public class AliPayController {
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);
}
}
}

View File

@ -1156,6 +1156,9 @@ public class WxServiceImpl implements WxService {
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);
}
}
}

View File

@ -656,7 +656,9 @@
</select>
<select id="selectTodayOrder" resultType="com.sqx.modules.artificer.entity.Orders">
select o.*,m.title,m.massage_img as massageImg,
select o.*,
(case when o.user_package_detail_id is null then m.title else bl.title end ) as title,
(case when o.user_package_detail_id is null then m.massage_img else bl.massage_img end ) as massageImg,
now() > DATE_ADD(STR_TO_DATE(o.serve_time, '%Y-%m-%d %H:%i'), INTERVAL #{minutes} MINUTE) as is_can_supplement,
(case when o.status = 4
then o.artificer_money + ifnull(o.add_artificer_money,0)
@ -666,6 +668,7 @@
left join orders o2 on o.old_orders_id = o2.orders_id and o2.status != 4
left join orders_massage om on om.orders_id=o.orders_id
left join massage_type m on m.massage_type_id=om.massage_id
LEFT JOIN bl_user_package_detail bl ON bl.id = om.massage_id
where o.artificer_id = #{artificerId}
and o.old_orders_id is not null
and o.status != 11
@ -702,14 +705,16 @@
<if test="type==5">
and date_format(o.serve_time,'%Y-%m-%d') = date_format(now(),'%Y-%m-%d') and o.status=2
</if>
union all
select o.*,m.title,m.massage_img as massageImg,
select o.*,
(case when o.user_package_detail_id is null then m.title else bl.title end ) as title,
(case when o.user_package_detail_id is null then m.massage_img else bl.massage_img end ) as massageImg,
now() > DATE_ADD(STR_TO_DATE(o.serve_time, '%Y-%m-%d %H:%i'), INTERVAL #{minutes} MINUTE) as is_can_supplement,
o.artificer_money + ifnull(o.add_artificer_money,0) as artificer_money_total
from orders o
left join orders_massage om on om.orders_id=o.orders_id
left join massage_type m on m.massage_type_id=om.massage_id
LEFT JOIN bl_user_package_detail bl ON bl.id = om.massage_id
where o.artificer_id = #{artificerId}
and o.parent_id = 0
and o.status != 11

View File

@ -108,7 +108,8 @@
a.classify_id,
b.value as classifyName,
c.sales,
c.esteem_rate
c.esteem_rate,
(select count(*) from bl_user_package_detail d where d.main_id = a.id) as service_count
from bl_user_package a
left join sys_dict b on a.classify_id = b.id and b.type="服务类型"
left join bl_massage_package c on a.package_id = c.id
@ -141,7 +142,8 @@
a.classify_id,
b.value as classifyName,
c.sales,
c.esteem_rate
c.esteem_rate,
(select count(*) from bl_user_package_detail d where d.main_id = a.id) as service_count
from bl_user_package a
left join sys_dict b on a.classify_id = b.id and b.type="服务类型"
left join bl_massage_package c on a.package_id = c.id

View File

@ -40,7 +40,8 @@
round(avg(a.package_price),2) as package_price,
round(avg(a.price),2) as price,
sum(case a.status when 1 then 1 else 0 end) as usedQuantity,
sum(case a.status when 0 then 1 else 0 end) as unUsedQuantity
sum(case a.status when 0 then 1 else 0 end) as unUsedQuantity,
count(*) as service_count
from bl_user_package_detail a
where a.main_id = #{mainId}
group by a.massage_type_id,a.title,a.massage_img,a.content_img
@ -57,6 +58,7 @@
round(avg(a.price),2) as price,
sum(case a.status when 1 then 1 else 0 end) as usedQuantity,
sum(case a.status when 0 then 1 else 0 end) as unUsedQuantity,
count(*) as service_count,
concat(round(count(massage_type_id)*avg(interval_days)),'天一疗程,每隔',round(avg(interval_days)),'天一次,共',round(count(massage_type_id)),'次') as interval_days_str,
(select max(end_times) from orders o where a.massage_type_id = o.massage_type_id and b.id = o.user_package_id) as max_time
from bl_user_package_detail a
@ -203,5 +205,13 @@
limit 1
</select>
<select id="findMassagePackageDetailsUsed" resultType="com.sqx.modules.bl.order.entity.UserPackageDetail">
select
sum(case a.status when 1 then 1 else 0 end) as usedQuantity,
count(*) as service_count
from bl_user_package_detail a
where a.main_id = #{mainId}
</select>
</mapper>