diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/GroupController.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/GroupController.java new file mode 100644 index 0000000..1b87bda --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/GroupController.java @@ -0,0 +1,98 @@ +package com.ruoyi.xq.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.annotation.RepeatSubmit; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.PageQuery; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.xq.domain.Group; +import com.ruoyi.xq.service.GroupService; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.Arrays; + +/** + * 相亲群 + * + * @author 77 + * @date 2024-05-15 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/xq/group") +public class GroupController extends BaseController { + + private final GroupService groupService; + + /** + * 查询相亲群列表 + */ + @SaCheckPermission("xq:group:list") + @GetMapping("/list") + public TableDataInfo list(Group bo, PageQuery pageQuery) { + Page page = groupService.page(pageQuery.build(), Wrappers.lambdaQuery(bo)); + return TableDataInfo.build(page); + } + + /** + * 获取相亲群详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("xq:group:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(groupService.getById(id)); + } + + /** + * 新增相亲群 + */ + @SaCheckPermission("xq:group:add") + @Log(title = "相亲群", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody Group bo) { + groupService.saveData(bo); + return R.ok(); + } + + /** + * 修改相亲群 + */ + @SaCheckPermission("xq:group:edit") + @Log(title = "相亲群", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody Group bo) { + groupService.updateData(bo); + return R.ok(); + } + + /** + * 删除相亲群 + * + * @param ids 主键串 + */ + @SaCheckPermission("xq:group:remove") + @Log(title = "相亲群", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + groupService.removeData(Arrays.asList(ids)); + return R.ok(); + } +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/GroupOrderController.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/GroupOrderController.java new file mode 100644 index 0000000..2ab108e --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/GroupOrderController.java @@ -0,0 +1,95 @@ +package com.ruoyi.xq.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.annotation.RepeatSubmit; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.PageQuery; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.xq.domain.GroupOrder; +import com.ruoyi.xq.service.GroupOrderService; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.Arrays; + +/** + * 入群订单 + * + * @author 77 + * @date 2024-05-15 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/xq/groupOrder") +public class GroupOrderController extends BaseController { + + private final GroupOrderService groupOrderService; + + /** + * 查询入群订单列表 + */ + @SaCheckPermission("xq:groupOrder:list") + @GetMapping("/list") + public TableDataInfo list(GroupOrder bo, PageQuery pageQuery) { + Page page = groupOrderService.page(pageQuery.build(), Wrappers.lambdaQuery(bo)); + return TableDataInfo.build(page); + } + + /** + * 获取入群订单详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("xq:groupOrder:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(groupOrderService.getById(id)); + } + + /** + * 新增入群订单 + */ + @SaCheckPermission("xq:groupOrder:add") + @Log(title = "入群订单", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody GroupOrder bo) { + return toAjax(groupOrderService.save(bo)); + } + + /** + * 修改入群订单 + */ + @SaCheckPermission("xq:groupOrder:edit") + @Log(title = "入群订单", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody GroupOrder bo) { + return toAjax(groupOrderService.updateById(bo)); + } + + /** + * 删除入群订单 + * + * @param ids 主键串 + */ + @SaCheckPermission("xq:groupOrder:remove") + @Log(title = "入群订单", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(groupOrderService.removeBatchByIds(Arrays.asList(ids))); + } +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/GroupAppController.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/GroupAppController.java new file mode 100644 index 0000000..a063033 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/GroupAppController.java @@ -0,0 +1,94 @@ +package com.ruoyi.xq.controller.app; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.annotation.SaIgnore; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.annotation.RepeatSubmit; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.PageModel; +import com.ruoyi.common.core.domain.PageQuery; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.helper.LoginHelper; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.xq.domain.ActivityOrder; +import com.ruoyi.xq.domain.Group; +import com.ruoyi.xq.domain.GroupOrder; +import com.ruoyi.xq.dto.app.activity.ActivityShopAppInfo; +import com.ruoyi.xq.dto.app.activity.CreateOrderReq; +import com.ruoyi.xq.dto.app.group.CreateGroupOrderReq; +import com.ruoyi.xq.dto.app.group.GroupInfoAppVo; +import com.ruoyi.xq.dto.app.group.GroupListAppVo; +import com.ruoyi.xq.dto.app.group.GroupQuery; +import com.ruoyi.xq.dto.app.pay.OrderCreateVo; +import com.ruoyi.xq.dto.app.user.HomePageReq; +import com.ruoyi.xq.dto.app.user.vo.HomeUserListVo; +import com.ruoyi.xq.service.GroupOrderService; +import com.ruoyi.xq.service.GroupService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.Arrays; + +/** + * 相亲群 + * + * @author 77 + * @date 2024-05-15 + */ + +@RestController +@RequestMapping("/api/group") +@Tag(name = "相亲群相关接口") +public class GroupAppController extends BaseController { + @Autowired + private GroupService groupService; + @Autowired + private GroupOrderService groupOrderService; + + @GetMapping("/page") + @Operation(summary = "相亲群查询-分页") + @Log(title = "相亲群查询-分页", businessType = BusinessType.OTHER, isPrintResponseData = false,isSaveDb = false) + public R> groupPage(PageQuery pageQuery, GroupQuery groupQuery){ + Page vo = groupService.pageApp(pageQuery, groupQuery); + return R.ok(PageModel.build(vo)); + } + + @GetMapping("/info") + @Operation(summary = "相亲群详情") + @Log(title = "相亲群详情", businessType = BusinessType.OTHER, isPrintResponseData = false, isSaveDb = false) + @SaIgnore + public R info(Long groupId){ + if(groupId == null){ + return R.ok(); + } + GroupInfoAppVo info = groupService.info(groupId); + return R.ok(info); + } + + @PostMapping("/create/order") + @Operation(summary = "创建相亲群订单") + @Log(title = "创建相亲群订单", businessType = BusinessType.OTHER) + public R createOrder(@RequestBody CreateGroupOrderReq req){ + Long userId = LoginHelper.getUserId(); + req.setUserId(userId); + GroupOrder order = groupOrderService.createOrder(req); + OrderCreateVo result = new OrderCreateVo(); + result.setPrice(order.getJoinPrice()); + result.setOrderNo(order.getOrderNo()); + result.setOrderName(order.getOrderName()); + return R.ok(result); + } + +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/Group.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/Group.java new file mode 100644 index 0000000..7f8c345 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/Group.java @@ -0,0 +1,64 @@ +package com.ruoyi.xq.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 相亲群对象 xq_group + * + * @author 77 + * @date 2024-05-15 + */ +@Data +@TableName("xq_group") +public class Group implements Serializable { + + private static final long serialVersionUID=1L; + + /** + * + */ + @TableId(value = "id") + private Long id; + /** + * 群头像 + */ + private String groupImage; + /** + * 群名称 + */ + private String groupName; + /** + * 群内女性比例 + */ + private Integer groupWomanRate; + /** + * 群内男性比例 + */ + private Integer groupManRate; + /** + * 城市名称 + */ + private String cityName; + /** + * 城市编码 + */ + private String cityCode; + /** + * 入群价格 + */ + private BigDecimal joinPrice; + + private String groupRemark; + + private Integer deleteFlag; + + private LocalDateTime createTime; + private LocalDateTime updateTime; + +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/GroupOrder.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/GroupOrder.java new file mode 100644 index 0000000..ac819ef --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/GroupOrder.java @@ -0,0 +1,112 @@ +package com.ruoyi.xq.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 入群订单对象 xq_group_order + * + * @author 77 + * @date 2024-05-15 + */ +@Data +@TableName("xq_group_order") +public class GroupOrder implements Serializable { + + private static final long serialVersionUID=1L; + + /** + * + */ + @TableId(value = "id") + private Long id; + /** + * 群ID + */ + private Long groupId; + /** + * 群头像 + */ + private String groupImage; + /** + * 群名称 + */ + private String groupName; + /** + * 城市名称 + */ + private String cityName; + /** + * 城市编码 + */ + private String cityCode; + /** + * 活动填写手机 + */ + private String joinMobile; + /** + * 入群价格 + */ + private BigDecimal joinPrice; + /** + * 用户ID + */ + private Long userId; + /** + * 用户号 + */ + private String usercode; + /** + * 性别 + */ + private Integer gender; + /** + * 下单body + */ + private String body; + /** + * 订单说明 + */ + private String orderName; + /** + * 订单号 + */ + private String orderNo; + /** + * 平台 + */ + private String platformType; + /** + * 状态 0-待支付 1-已支付 5-已退款 10-无需支付 + */ + private Integer payStatus; + /** + * 支付时间 + */ + private LocalDateTime payTime; + /** + * appId + */ + private String appid; + /** + * + */ + private String returnContent; + /** + * + */ + private String operateIp; + /** + * 后台操作管理员ID + */ + private Long adminId; + + private LocalDateTime createTime; + private LocalDateTime updateTime; + +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/group/CreateGroupOrderReq.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/group/CreateGroupOrderReq.java new file mode 100644 index 0000000..c51d92a --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/group/CreateGroupOrderReq.java @@ -0,0 +1,16 @@ +package com.ruoyi.xq.dto.app.group; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class CreateGroupOrderReq { + @Schema(description = "群ID") + private Long groupId; + + @Schema(description = "手机号") + private String mobile; + + @Schema(hidden = true) + private Long userId; +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/group/GroupInfoAppVo.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/group/GroupInfoAppVo.java new file mode 100644 index 0000000..f7f0983 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/group/GroupInfoAppVo.java @@ -0,0 +1,13 @@ +package com.ruoyi.xq.dto.app.group; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class GroupInfoAppVo extends GroupListAppVo { + private String groupRemark; + @Schema(description = "参与状态 0-未支付 1-已支付") + private Integer joinStatus; +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/group/GroupListAppVo.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/group/GroupListAppVo.java new file mode 100644 index 0000000..d0a62ce --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/group/GroupListAppVo.java @@ -0,0 +1,39 @@ +package com.ruoyi.xq.dto.app.group; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class GroupListAppVo { + private Long id; + /** + * 群头像 + */ + private String groupImage; + /** + * 群名称 + */ + private String groupName; + /** + * 群内女性比例 + */ + private Integer groupWomanRate; + /** + * 群内男性比例 + */ + private Integer groupManRate; + /** + * 城市名称 + */ + private String cityName; + /** + * 城市编码 + */ + private String cityCode; + /** + * 入群价格 + */ + private BigDecimal joinPrice; + +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/group/GroupQuery.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/group/GroupQuery.java new file mode 100644 index 0000000..ace4bce --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/group/GroupQuery.java @@ -0,0 +1,10 @@ +package com.ruoyi.xq.dto.app.group; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class GroupQuery { + @Schema(description = "城市编码") + private String cityCode; +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/enums/common/OrderTypeEnum.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/enums/common/OrderTypeEnum.java index f372e2b..c70e786 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/enums/common/OrderTypeEnum.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/enums/common/OrderTypeEnum.java @@ -9,6 +9,7 @@ public enum OrderTypeEnum { WX_TRANS("X"), AUTH_ORDER("A"), ACTIVITY_MATCHMAKING("M"), + GROUP("G"), ; private final String type; diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/enums/common/TraceIdEnum.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/enums/common/TraceIdEnum.java index 4c84dbb..324f699 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/enums/common/TraceIdEnum.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/enums/common/TraceIdEnum.java @@ -7,7 +7,8 @@ public enum TraceIdEnum { WITHDRAW("WT","提现"), VIP("VT","VIP"), WX_TRANS("XT","微信交换"), - ACTIVITY_MATCHMAKING("AM","相亲会"), + ACTIVITY_MATCHMAKING("AT","相亲会"), + GROUP("GT","相亲群"), ; private final String code; private final String text; diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/PayManager.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/PayManager.java index bda00a2..88cf817 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/PayManager.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/PayManager.java @@ -1,10 +1,7 @@ package com.ruoyi.xq.manager; import com.ruoyi.common.exception.ServiceException; -import com.ruoyi.xq.domain.AuthOrder; -import com.ruoyi.xq.domain.VipOrder; -import com.ruoyi.xq.domain.VipPrice; -import com.ruoyi.xq.domain.WxTransOrder; +import com.ruoyi.xq.domain.*; import com.ruoyi.xq.dto.app.pay.ConsumeResp; import com.ruoyi.xq.dto.app.pay.PayOrderInfoDTO; import com.ruoyi.xq.enums.common.OrderTypeEnum; @@ -13,7 +10,6 @@ import com.ruoyi.xq.enums.pay.PlatformTypeEnum; import com.ruoyi.xq.mq.AmqpProducer; import com.ruoyi.xq.mq.handle.dto.CalculateSalesHandleDTO; import com.ruoyi.xq.service.*; -import com.ruoyi.xq.service.impl.AuthOrderServiceImpl; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -37,6 +33,8 @@ public class PayManager { private AuthOrderService authOrderService; @Autowired private ActivityOrderService activityOrderService; + @Autowired + private GroupOrderService groupOrderService; public PayOrderInfoDTO getOrderInfo(String orderNo){ OrderTypeEnum orderTypeEnum = OrderNoUtil.getType(orderNo); @@ -88,6 +86,34 @@ public class PayManager { dto.setPrice(authOrder.getPrice()); dto.setOrderNo(authOrder.getOrderNo()); break; + case ACTIVITY_MATCHMAKING: + ActivityOrder activityOrder = activityOrderService.getByOrderNo(orderNo); + if(activityOrder == null){ + throw new ServiceException("订单不存在,请重新下单支付"); + } + if(!PayStatusEnum.READY_PAY.getCode().equals(activityOrder.getPayStatus())){ + throw new ServiceException("订单状态有误,请重新下单支付"); + } + dto = new PayOrderInfoDTO(); + dto.setBody(activityOrder.getBody()); + dto.setSubject(activityOrder.getBody()); + dto.setPrice(activityOrder.getPrice()); + dto.setOrderNo(activityOrder.getOrderNo()); + break; + case GROUP: + GroupOrder groupOrder = groupOrderService.getByOrderNo(orderNo); + if(groupOrder == null){ + throw new ServiceException("订单不存在,请重新下单支付"); + } + if(!PayStatusEnum.READY_PAY.getCode().equals(groupOrder.getPayStatus())){ + throw new ServiceException("订单状态有误,请重新下单支付"); + } + dto = new PayOrderInfoDTO(); + dto.setBody(groupOrder.getBody()); + dto.setSubject(groupOrder.getBody()); + dto.setPrice(groupOrder.getJoinPrice()); + dto.setOrderNo(groupOrder.getOrderNo()); + break; default: break; } @@ -148,6 +174,9 @@ public class PayManager { case ACTIVITY_MATCHMAKING: activityOrderService.doSuccess(orderNo, params, appId, payTypeEnum); break; + case GROUP: + groupOrderService.doSuccess(orderNo, params, appId, payTypeEnum); + break; default: break; } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/mapper/GroupMapper.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/mapper/GroupMapper.java new file mode 100644 index 0000000..9ffaa50 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/mapper/GroupMapper.java @@ -0,0 +1,20 @@ +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.Group; +import com.ruoyi.xq.dto.app.group.GroupListAppVo; +import com.ruoyi.xq.dto.app.group.GroupQuery; +import org.apache.ibatis.annotations.Param; + +/** + * 相亲群Mapper接口 + * + * @author 77 + * @date 2024-05-15 + */ +public interface GroupMapper extends BaseMapper { + + Page pageApp(@Param("build") Page build, @Param("query") GroupQuery query); + +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/mapper/GroupOrderMapper.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/mapper/GroupOrderMapper.java new file mode 100644 index 0000000..7192c46 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/mapper/GroupOrderMapper.java @@ -0,0 +1,14 @@ +package com.ruoyi.xq.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.xq.domain.GroupOrder; + +/** + * 入群订单Mapper接口 + * + * @author 77 + * @date 2024-05-15 + */ +public interface GroupOrderMapper extends BaseMapper { + +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/GroupOrderService.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/GroupOrderService.java new file mode 100644 index 0000000..d71eab0 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/GroupOrderService.java @@ -0,0 +1,26 @@ +package com.ruoyi.xq.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.xq.domain.GroupOrder; +import com.ruoyi.xq.dto.app.group.CreateGroupOrderReq; +import com.ruoyi.xq.dto.app.pay.ConsumeResp; +import com.ruoyi.xq.enums.pay.PlatformTypeEnum; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Map; + +/** + * 入群订单Service接口 + * + * @author 77 + * @date 2024-05-15 + */ +public interface GroupOrderService extends IService { + GroupOrder getSuccessByGroupIdAndUserId(Long groupId, Long userId); + + GroupOrder createOrder(CreateGroupOrderReq req); + + GroupOrder getByOrderNo(String orderNo); + + ConsumeResp doSuccess(String orderNo, Map params, String appId, PlatformTypeEnum payTypeEnum); +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/GroupService.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/GroupService.java new file mode 100644 index 0000000..691a6da --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/GroupService.java @@ -0,0 +1,32 @@ +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.Group; +import com.ruoyi.xq.dto.app.activity.ActivityShopAppInfo; +import com.ruoyi.xq.dto.app.group.GroupInfoAppVo; +import com.ruoyi.xq.dto.app.group.GroupListAppVo; +import com.ruoyi.xq.dto.app.group.GroupQuery; + +import java.util.List; + +/** + * 相亲群Service接口 + * + * @author 77 + * @date 2024-05-15 + */ +public interface GroupService extends IService { + + void removeData(List ids); + + void updateData(Group bo); + + void saveData(Group bo); + + Page pageApp(PageQuery pageQuery, GroupQuery groupQuery); + + GroupInfoAppVo info(Long groupId); + +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/ActivityOrderServiceImpl.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/ActivityOrderServiceImpl.java index 5888842..a91962b 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/ActivityOrderServiceImpl.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/ActivityOrderServiceImpl.java @@ -63,7 +63,7 @@ public class ActivityOrderServiceImpl extends ServiceImpl idArray = Arrays.stream(ids).collect(Collectors.toList()); this.update(Wrappers.lambdaUpdate(ActivityShop.class) - .eq(ActivityShop::getId, ids) + .in(ActivityShop::getId, idArray) .set(ActivityShop::getDeleteFlag, 1)); } } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/GroupOrderServiceImpl.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/GroupOrderServiceImpl.java new file mode 100644 index 0000000..6f20151 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/GroupOrderServiceImpl.java @@ -0,0 +1,118 @@ +package com.ruoyi.xq.service.impl; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.exception.ServiceException; +import com.ruoyi.xq.domain.ActivityOrder; +import com.ruoyi.xq.domain.Group; +import com.ruoyi.xq.domain.GroupOrder; +import com.ruoyi.xq.dto.app.group.CreateGroupOrderReq; +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.manager.OrderNoUtil; +import com.ruoyi.xq.manager.TraceIdManager; +import com.ruoyi.xq.mapper.GroupOrderMapper; +import com.ruoyi.xq.service.GroupOrderService; +import com.ruoyi.xq.service.GroupService; +import com.ruoyi.xq.service.UserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Map; + +/** + * 入群订单Service业务层处理 + * + * @author 77 + * @date 2024-05-15 + */ +@Service +public class GroupOrderServiceImpl extends ServiceImpl implements GroupOrderService { + + @Autowired + private GroupService groupService; + @Autowired + private UserService userService; + + @Override + public GroupOrder getSuccessByGroupIdAndUserId(Long groupId, Long userId) { + return this.getOne(Wrappers.lambdaQuery(GroupOrder.class).eq(GroupOrder::getGroupId, groupId) + .eq(GroupOrder::getPayStatus, PayStatusEnum.PAY.getCode()) + .eq(GroupOrder::getUserId, userId).last("limit 1")); + } + + @Override + public GroupOrder createOrder(CreateGroupOrderReq req) { + GroupOrder order = this.getSuccessByGroupIdAndUserId(req.getGroupId(), req.getUserId()); + if(order != null){ + throw new ServiceException("您已支付过,无法重复支付"); + } + MinUser minUser = userService.getMinUserById(req.getUserId()); + if(minUser== null){ + throw new ServiceException("用户不存在"); + } + Group group = groupService.getById(req.getGroupId()); + if(group == null){ + throw new ServiceException("相亲群不存在"); + } + String orderNo = OrderNoUtil.gen(OrderTypeEnum.GROUP); + GroupOrder add = new GroupOrder(); + add.setGroupId(group.getId()); + add.setGroupImage(group.getGroupImage()); + add.setGroupName(group.getGroupName()); + add.setCityName(group.getCityName()); + add.setCityCode(group.getCityCode()); + add.setJoinMobile(req.getMobile()); + add.setJoinPrice(group.getJoinPrice()); + add.setUserId(minUser.getId()); + add.setUsercode(minUser.getUsercode()); + add.setGender(minUser.getGender()); + add.setBody("入群费用"); + add.setOrderName("入群费用"); + add.setOrderNo(orderNo); + add.setPayStatus(PayStatusEnum.READY_PAY.getCode()); + return add; + } + + @Override + public GroupOrder getByOrderNo(String orderNo){ + return this.getOne(Wrappers.lambdaQuery(GroupOrder.class).eq(GroupOrder::getOrderNo, orderNo).last("limit 1")); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public ConsumeResp doSuccess(String orderNo, Map params, String appId, PlatformTypeEnum payTypeEnum){ + GroupOrder order = this.getByOrderNo(orderNo); + if(order == null){ + ConsumeResp resp = new ConsumeResp(); + resp.setSuccess(false); + return resp; + } + String traceId = TraceIdManager.gen(TraceIdEnum.GROUP); + boolean success = this.update(Wrappers.lambdaUpdate(GroupOrder.class) + .eq(GroupOrder::getId, order.getId()) + .eq(GroupOrder::getPayStatus, PayStatusEnum.READY_PAY.getCode()) + .set(GroupOrder::getPayStatus, PayStatusEnum.PAY.getCode()) + .set(GroupOrder::getReturnContent, JSON.toJSONString(params)) + .set(GroupOrder::getAppid,appId) + .set(GroupOrder::getPlatformType, payTypeEnum.getCode())); + if(!success){ + ConsumeResp resp = new ConsumeResp(); + resp.setSuccess(false); + return resp; + } + ConsumeResp resp = new ConsumeResp(); + resp.setPrice(order.getJoinPrice()); + resp.setUserId(order.getUserId()); + resp.setTraceId(traceId); + resp.setSuccess(true); + return resp; + } + +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/GroupServiceImpl.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/GroupServiceImpl.java new file mode 100644 index 0000000..3fd1f07 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/GroupServiceImpl.java @@ -0,0 +1,90 @@ +package com.ruoyi.xq.service.impl; + +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.helper.LoginHelper; +import com.ruoyi.xq.domain.ActivityShop; +import com.ruoyi.xq.domain.AreaCode; +import com.ruoyi.xq.domain.Group; +import com.ruoyi.xq.domain.GroupOrder; +import com.ruoyi.xq.dto.app.activity.ActivityShopAppInfo; +import com.ruoyi.xq.dto.app.group.GroupInfoAppVo; +import com.ruoyi.xq.dto.app.group.GroupListAppVo; +import com.ruoyi.xq.dto.app.group.GroupQuery; +import com.ruoyi.xq.mapper.GroupMapper; +import com.ruoyi.xq.service.AreaCodeService; +import com.ruoyi.xq.service.GroupOrderService; +import com.ruoyi.xq.service.GroupService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 相亲群Service业务层处理 + * + * @author 77 + * @date 2024-05-15 + */ +@Service +public class GroupServiceImpl extends ServiceImpl implements GroupService { + + @Autowired + private AreaCodeService areaCodeService; + @Autowired + private GroupOrderService groupOrderService; + + @Override + public void removeData(List ids) { + this.update(Wrappers.lambdaUpdate(Group.class) + .in(Group::getId, ids) + .set(Group::getDeleteFlag, 1)); + } + + @Override + public void updateData(Group bo) { + AreaCode areaCode = areaCodeService.getById(bo.getCityCode()); + bo.setCityName(areaCode.getName()); + this.updateById(bo); + } + + @Override + public void saveData(Group bo) { + AreaCode areaCode = areaCodeService.getById(bo.getCityCode()); + bo.setCityName(areaCode.getName()); + this.save(bo); + } + + @Override + public Page pageApp(PageQuery pageQuery, GroupQuery groupQuery) { + return baseMapper.pageApp(pageQuery.build(), groupQuery); + } + + @Override + public GroupInfoAppVo info(Long groupId) { + Long userId = LoginHelper.getUserId(); + Group group = this.getById(groupId); + GroupInfoAppVo vo = new GroupInfoAppVo(); + vo.setGroupRemark(group.getGroupRemark()); + vo.setJoinStatus(0); + vo.setId(group.getId()); + vo.setGroupImage(group.getGroupImage()); + vo.setGroupName(group.getGroupName()); + vo.setGroupWomanRate(group.getGroupWomanRate()); + vo.setGroupManRate(group.getGroupManRate()); + vo.setCityName(group.getCityName()); + vo.setCityCode(group.getCityCode()); + vo.setJoinPrice(group.getJoinPrice()); + if(userId != null){ + GroupOrder groupOrder = groupOrderService.getSuccessByGroupIdAndUserId(groupId,userId); + if(groupOrder != null){ + vo.setJoinStatus(1); + } + } + return vo; + } +} diff --git a/ruoyi-xq/src/main/resources/mapper/xq/GroupMapper.xml b/ruoyi-xq/src/main/resources/mapper/xq/GroupMapper.xml new file mode 100644 index 0000000..2b11032 --- /dev/null +++ b/ruoyi-xq/src/main/resources/mapper/xq/GroupMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-xq/src/main/resources/mapper/xq/GroupOrderMapper.xml b/ruoyi-xq/src/main/resources/mapper/xq/GroupOrderMapper.xml new file mode 100644 index 0000000..ae558fb --- /dev/null +++ b/ruoyi-xq/src/main/resources/mapper/xq/GroupOrderMapper.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +