This commit is contained in:
77
2024-05-10 23:31:47 +08:00
parent 0d2c93932f
commit b313f12f65
12 changed files with 177 additions and 10 deletions

View File

@@ -33,6 +33,7 @@ public class ActivityOrder implements Serializable {
* 用户号
*/
private String usercode;
private Integer gender;
/**
* 跟踪ID
*/
@@ -53,6 +54,7 @@ public class ActivityOrder implements Serializable {
* 活动标题
*/
private String activityTitle;
private String activityMobile;
/**
* 订单说明
*/

View File

@@ -37,6 +37,7 @@ public class ActivityUser implements Serializable {
* 用户号
*/
private String usercode;
private Integer gender;
/**
* 填写的手机号
*/

View File

@@ -0,0 +1,11 @@
package com.ruoyi.xq.dto.admin.activity;
import com.ruoyi.xq.domain.ActivityOrder;
import lombok.Data;
@Data
public class ActivityOrderAdminVo extends ActivityOrder {
private String nickname;
private String mobile;
private String avatar;
}

View File

@@ -35,6 +35,8 @@ public class PayManager {
private WxTransOrderService wxTransOrderService;
@Autowired
private AuthOrderService authOrderService;
@Autowired
private ActivityOrderService activityOrderService;
public PayOrderInfoDTO getOrderInfo(String orderNo){
OrderTypeEnum orderTypeEnum = OrderNoUtil.getType(orderNo);
@@ -143,6 +145,9 @@ public class PayManager {
case AUTH_ORDER:
ConsumeResp authResp = authOrderService.doSuccess(orderNo, params, appId, payTypeEnum);
break;
case ACTIVITY_MATCHMAKING:
activityOrderService.doSuccess(orderNo, params, appId, payTypeEnum);
break;
default:
break;
}

View File

@@ -1,7 +1,10 @@
package com.ruoyi.xq.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.xq.domain.ActivityOrder;
import com.ruoyi.xq.dto.admin.activity.ActivityOrderAdminVo;
import org.apache.ibatis.annotations.Param;
/**
* 相亲会订单Mapper接口
@@ -11,4 +14,5 @@ import com.ruoyi.xq.domain.ActivityOrder;
*/
public interface ActivityOrderMapper extends BaseMapper<ActivityOrder> {
Page<ActivityOrderAdminVo> pageAdmin(@Param("build") Page<Object> build, @Param("bo") ActivityOrderAdminVo bo);
}

View File

@@ -1,9 +1,17 @@
package com.ruoyi.xq.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.xq.domain.ActivityOrder;
import com.ruoyi.xq.dto.admin.activity.ActivityOrderAdminVo;
import com.ruoyi.xq.dto.app.activity.CreateOrderReq;
import com.ruoyi.xq.dto.app.pay.ConsumeResp;
import com.ruoyi.xq.dto.app.pay.OrderCreateVo;
import com.ruoyi.xq.enums.pay.PlatformTypeEnum;
import org.springframework.transaction.annotation.Transactional;
import java.util.Map;
/**
* 相亲会订单Service接口
@@ -14,4 +22,10 @@ import com.ruoyi.xq.dto.app.pay.OrderCreateVo;
public interface ActivityOrderService extends IService<ActivityOrder> {
ActivityOrder createOrder(CreateOrderReq req);
ActivityOrder getByOrderNo(String orderNo);
ConsumeResp doSuccess(String orderNo, Map<String, String> params, String appId, PlatformTypeEnum payTypeEnum);
Page<ActivityOrderAdminVo> pageAdmin(PageQuery pageQuery, ActivityOrderAdminVo bo);
}

View File

@@ -20,6 +20,8 @@ public interface ActivityShopService extends IService<ActivityShop> {
ActivityShop getByCode(String activityCode);
void resetActivityShopUser(Long activityId,Integer gender);
ActivityShopAppInfo info(Long activityId, String activityCode);
JoinResp join(Long userId, Long activityId);

View File

@@ -11,4 +11,7 @@ import com.ruoyi.xq.domain.ActivityUser;
*/
public interface ActivityUserService extends IService<ActivityUser> {
void joinActivity(String orderNo);
Long countByActivityIdAndGender(Long id, Integer gender);
}

View File

@@ -1,28 +1,36 @@
package com.ruoyi.xq.service.impl;
import com.alibaba.fastjson.JSON;
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.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.xq.domain.ActivityOrder;
import com.ruoyi.xq.domain.ActivityShop;
import com.ruoyi.xq.dto.admin.activity.ActivityOrderAdminVo;
import com.ruoyi.xq.dto.app.activity.CreateOrderReq;
import com.ruoyi.xq.dto.app.pay.OrderCreateVo;
import com.ruoyi.xq.dto.app.pay.ConsumeResp;
import com.ruoyi.xq.dto.common.user.MinUser;
import com.ruoyi.xq.enums.common.OrderTypeEnum;
import com.ruoyi.xq.enums.common.TraceIdEnum;
import com.ruoyi.xq.enums.pay.PayStatusEnum;
import com.ruoyi.xq.enums.pay.PlatformTypeEnum;
import com.ruoyi.xq.enums.userinfo.UserGenderEnum;
import com.ruoyi.xq.manager.OrderNoUtil;
import com.ruoyi.xq.manager.TraceIdManager;
import com.ruoyi.xq.mapper.ActivityOrderMapper;
import com.ruoyi.xq.service.ActivityOrderService;
import com.ruoyi.xq.service.ActivityShopService;
import com.ruoyi.xq.service.ActivityUserService;
import com.ruoyi.xq.service.UserService;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.Map;
/**
* 相亲会订单Service业务层处理
@@ -37,6 +45,8 @@ public class ActivityOrderServiceImpl extends ServiceImpl<ActivityOrderMapper,Ac
private ActivityShopService activityShopService;
@Autowired
private UserService userService;
@Autowired
private ActivityUserService activityUserService;
@Override
public ActivityOrder createOrder(CreateOrderReq req) {
ActivityShop activityShop = activityShopService.getById(req.getActivityId());
@@ -68,10 +78,53 @@ public class ActivityOrderServiceImpl extends ServiceImpl<ActivityOrderMapper,Ac
order.setTraceId(traceId);
order.setActivityId(activityShop.getId());
order.setActivityTitle(activityShop.getActivityTitle());
order.setActivityMobile(req.getMobile());
order.setOrderName("报名相亲会");
order.setOrderNo(orderNo);
order.setPayStatus(PayStatusEnum.READY_PAY.getCode());
this.save(order);
return order;
}
@Override
public ActivityOrder getByOrderNo(String orderNo){
return this.getOne(Wrappers.lambdaQuery(ActivityOrder.class).eq(ActivityOrder::getOrderNo, orderNo).last("limit 1"));
}
@Override
@Transactional(rollbackFor = Exception.class)
public ConsumeResp doSuccess(String orderNo, Map<String, String> params, String appId, PlatformTypeEnum payTypeEnum){
ActivityOrder order = this.getByOrderNo(orderNo);
if(order == null){
ConsumeResp resp = new ConsumeResp();
resp.setSuccess(false);
return resp;
}
String traceId = TraceIdManager.gen(TraceIdEnum.ACTIVITY_MATCHMAKING);
boolean success = this.update(Wrappers.lambdaUpdate(ActivityOrder.class)
.eq(ActivityOrder::getId, order.getId())
.eq(ActivityOrder::getPayStatus, PayStatusEnum.READY_PAY.getCode())
.set(ActivityOrder::getPayStatus, PayStatusEnum.PAY.getCode())
.set(ActivityOrder::getTraceId, traceId)
.set(ActivityOrder::getReturnContent, JSON.toJSONString(params))
.set(ActivityOrder::getAppid,appId)
.set(ActivityOrder::getPlatformType, payTypeEnum.getCode()));
if(!success){
ConsumeResp resp = new ConsumeResp();
resp.setSuccess(false);
return resp;
}
activityUserService.joinActivity(order.getOrderNo());
ConsumeResp resp = new ConsumeResp();
resp.setPrice(order.getPrice());
resp.setUserId(order.getUserId());
resp.setTraceId(traceId);
resp.setSuccess(true);
return resp;
}
@Override
public Page<ActivityOrderAdminVo> pageAdmin(PageQuery pageQuery, ActivityOrderAdminVo bo) {
return baseMapper.pageAdmin(pageQuery.build(), bo);
}
}

View File

@@ -6,10 +6,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.xq.domain.ActivityShop;
import com.ruoyi.xq.domain.AreaCode;
import com.ruoyi.xq.domain.User;
import com.ruoyi.xq.domain.UserAuth;
import com.ruoyi.xq.domain.*;
import com.ruoyi.xq.dto.app.activity.ActivityShopAppInfo;
import com.ruoyi.xq.dto.app.activity.ActivityShopAppList;
import com.ruoyi.xq.dto.app.activity.JoinResp;
@@ -17,10 +14,7 @@ import com.ruoyi.xq.enums.activity.ActivityShopStatusEnum;
import com.ruoyi.xq.enums.common.AuditEnum;
import com.ruoyi.xq.enums.userinfo.UserGenderEnum;
import com.ruoyi.xq.mapper.ActivityShopMapper;
import com.ruoyi.xq.service.ActivityShopService;
import com.ruoyi.xq.service.AreaCodeService;
import com.ruoyi.xq.service.UserAuthService;
import com.ruoyi.xq.service.UserService;
import com.ruoyi.xq.service.*;
import org.apache.commons.lang3.BooleanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -41,6 +35,8 @@ public class ActivityShopServiceImpl extends ServiceImpl<ActivityShopMapper,Acti
private UserService userService;
@Autowired
private UserAuthService userAuthService;
@Autowired
private ActivityUserService activityUserService;
@Override
public IPage<ActivityShopAppList> pageApp(PageQuery pageQuery) {
@@ -57,6 +53,32 @@ public class ActivityShopServiceImpl extends ServiceImpl<ActivityShopMapper,Acti
return this.getOne(Wrappers.lambdaQuery(ActivityShop.class).eq(ActivityShop::getActivityCode, activityCode).last("limit 1"));
}
@Override
public void resetActivityShopUser(Long activityId,Integer gender){
ActivityShop activityShop = this.getById(activityId);
if(activityShop == null){
return;
}
if(gender != null){
Long count = activityUserService.countByActivityIdAndGender(activityId, gender);
if(gender.equals(UserGenderEnum.MAN.getCode())){
this.update(Wrappers.lambdaUpdate(ActivityShop.class).eq(ActivityShop::getId, activityId)
.set(ActivityShop::getJoinManNum, count));
}else if(gender.equals(UserGenderEnum.WOMEN.getCode())){
this.update(Wrappers.lambdaUpdate(ActivityShop.class).eq(ActivityShop::getId, activityId)
.set(ActivityShop::getJoinWomenNum, count));
}
} else {
Long womenCount = activityUserService.countByActivityIdAndGender(activityId, UserGenderEnum.WOMEN.getCode());
this.update(Wrappers.lambdaUpdate(ActivityShop.class).eq(ActivityShop::getId, activityId)
.set(ActivityShop::getJoinWomenNum, womenCount));
Long manCount = activityUserService.countByActivityIdAndGender(activityId, UserGenderEnum.MAN.getCode());
this.update(Wrappers.lambdaUpdate(ActivityShop.class).eq(ActivityShop::getId, activityId)
.set(ActivityShop::getJoinManNum, manCount));
}
}
@Override
public ActivityShopAppInfo info(Long activityId, String activityCode) {
ActivityShop activityShop = null;

View File

@@ -1,9 +1,15 @@
package com.ruoyi.xq.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.xq.domain.ActivityOrder;
import com.ruoyi.xq.domain.ActivityUser;
import com.ruoyi.xq.mapper.ActivityUserMapper;
import com.ruoyi.xq.service.ActivityOrderService;
import com.ruoyi.xq.service.ActivityShopService;
import com.ruoyi.xq.service.ActivityUserService;
import com.ruoyi.xq.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
@@ -15,4 +21,31 @@ import org.springframework.stereotype.Service;
@Service
public class ActivityUserServiceImpl extends ServiceImpl<ActivityUserMapper, ActivityUser> implements ActivityUserService {
@Autowired
private ActivityOrderService activityOrderService;
@Autowired
private UserService userService;
@Autowired
private ActivityShopService activityShopService;
@Override
public void joinActivity(String orderNo) {
ActivityOrder activityOrder = activityOrderService.getByOrderNo(orderNo);
ActivityUser activityUser = new ActivityUser();
activityUser.setActivityId(activityOrder.getActivityId());
activityUser.setUserId(activityOrder.getUserId());
activityUser.setUsercode(activityOrder.getUsercode());
activityUser.setGender(activityOrder.getGender());
activityUser.setMobile(activityOrder.getActivityMobile());
activityUser.setPay(1);
activityUser.setPrice(activityOrder.getPrice());
activityUser.setTraceId(activityOrder.getTraceId());
this.save(activityUser);
activityShopService.resetActivityShopUser(activityOrder.getActivityId(), activityOrder.getGender());
}
@Override
public Long countByActivityIdAndGender(Long activityId, Integer gender) {
return this.count(Wrappers.lambdaQuery(ActivityUser.class).eq(ActivityUser::getActivityId, activityId).eq(ActivityUser::getGender, gender));
}
}

View File

@@ -5,4 +5,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<mapper namespace="com.ruoyi.xq.mapper.ActivityOrderMapper">
<select id="pageAdmin" resultType="com.ruoyi.xq.dto.admin.activity.ActivityOrderAdminVo">
select t1.*, t2.nickname,t2.mobile,t2.avatar
from xq_activity_order t1
left join xq_user t2 on t1.user_id = t2.id
<where>
<if test="bo.usercode != null and bo.usercode != ''">
and t1.usercode = #{bo.usercode}
</if>
<if test="bo.nickname != null and bo.nickname != ''">
and t2.nickname like concat('%',#{bo.nickname},'%')
</if>
<if test="bo.mobile != null and bo.mobile != ''">
and t2.mobile = #{bo.mobile}
</if>
</where>
order by t1.create_time desc
</select>
</mapper>