diff --git a/src/main/java/com/peanut/modules/common/controller/TrainingClassController.java b/src/main/java/com/peanut/modules/common/controller/TrainingClassController.java new file mode 100644 index 00000000..c8379d99 --- /dev/null +++ b/src/main/java/com/peanut/modules/common/controller/TrainingClassController.java @@ -0,0 +1,119 @@ +package com.peanut.modules.common.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.peanut.common.utils.R; +import com.peanut.common.utils.ShiroUtils; +import com.peanut.config.Constants; +import com.peanut.config.DelayQueueConfig; +import com.peanut.modules.common.entity.BuyOrder; +import com.peanut.modules.common.entity.TrainingClass; +import com.peanut.modules.common.entity.TrainingToUser; +import com.peanut.modules.common.service.BuyOrderService; +import com.peanut.modules.common.service.TrainingClassService; +import com.peanut.modules.common.service.TrainingToUserService; +import com.peanut.modules.pay.weChatPay.dto.WechatPaymentInfo; +import com.peanut.modules.pay.weChatPay.service.WxpayService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; +import org.springframework.amqp.core.MessagePostProcessor; +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.math.BigDecimal; +import java.util.List; +import java.util.Map; + +/** + * 培训班 + */ +@Slf4j +@RestController("commonTrainingClass") +@RequestMapping("common/trainingClass") +public class TrainingClassController { + + @Autowired + private TrainingClassService trainingClassService; + @Autowired + private TrainingToUserService trainingToUserService; + @Autowired + private BuyOrderService buyOrderService; + @Autowired + private WxpayService wxpayService; + @Autowired + private RabbitTemplate rabbitTemplate; + + //培训班列表 + @RequestMapping("/trainingClassList") + public R trainingClassList(@RequestBody Map params) { + List trainingClassList = trainingClassService.list(new LambdaQueryWrapper() + .eq(StringUtils.isNotEmpty(params.get("year").toString()),TrainingClass::getYear,params.get("year")) + .orderByAsc(TrainingClass::getSort)); + for (TrainingClass trainingClass : trainingClassList) { + int count = trainingToUserService.count(new LambdaQueryWrapper() + .eq(TrainingToUser::getUserId, ShiroUtils.getUId()) + .eq(TrainingToUser::getTrainingId,trainingClass.getId())); + if (count > 0) { + trainingClass.setIsJoin(1); + }else { + trainingClass.setIsJoin(0); + } + } + return R.ok().put("trainingClassList",trainingClassList); + } + + //培训班报名 + @RequestMapping("/trainingClassPaySave") + @Transactional + public R trainingClassPaySave(@RequestBody BuyOrder buyOrder){ + buyOrder.setOrderStatus("0"); + buyOrder.setOrderType("trainingClass"); + String timeId = IdWorker.getTimeId().substring(0, 32); + buyOrder.setOrderSn(timeId); + buyOrder.setUserId(ShiroUtils.getUId()); + buyOrderService.save(buyOrder); + BigDecimal totalPrice = buyOrder.getRealMoney(); + //微信支付预付款订单 + if(Constants.PAYMENT_METHOD_WECHAT_PAY.equals(buyOrder.getPaymentMethod())){ + BuyOrder buyOrderEntity = buyOrderService.getBaseMapper().selectOne(new LambdaQueryWrapper() + .eq(BuyOrder::getOrderSn, timeId)); + WechatPaymentInfo paymentInfo = new WechatPaymentInfo(); + paymentInfo.setOrderSn(buyOrderEntity.getOrderSn()); + paymentInfo.setBuyOrderId(buyOrder.getOrderId()); + paymentInfo.setTotalAmount(buyOrderEntity.getRealMoney()); + if (buyOrder.getCome()==2){ + paymentInfo.setAppName("wumen"); + } else if (buyOrder.getCome()==1) { + paymentInfo.setAppName("zmzm"); + } else if (buyOrder.getCome()==3) { + paymentInfo.setAppName("xlkj"); + }else { + paymentInfo.setAppName(buyOrder.getAppName()); + } + wxpayService.prepay(paymentInfo); + } + rabbitTemplate.convertAndSend( + DelayQueueConfig.ORDER_TO_BE_PAY_EXCHANGE, + DelayQueueConfig.ORDER_TO_BE_PAY_ROUTING_KEY, + buyOrder.getOrderId(), + messagePostProcessor() + ); + return R.ok().put("orderSn", timeId).put("money", totalPrice); + } + + private MessagePostProcessor messagePostProcessor() { + return message -> { + //设置有效期30分钟 + message.getMessageProperties().setExpiration(String.valueOf(30 * 60 * 1000)); + return message; + }; + } + + + + +} diff --git a/src/main/java/com/peanut/modules/common/dao/TrainingClassDao.java b/src/main/java/com/peanut/modules/common/dao/TrainingClassDao.java new file mode 100644 index 00000000..39e26447 --- /dev/null +++ b/src/main/java/com/peanut/modules/common/dao/TrainingClassDao.java @@ -0,0 +1,9 @@ +package com.peanut.modules.common.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.peanut.modules.common.entity.TrainingClass; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface TrainingClassDao extends BaseMapper { +} diff --git a/src/main/java/com/peanut/modules/common/dao/TrainingToUserDao.java b/src/main/java/com/peanut/modules/common/dao/TrainingToUserDao.java new file mode 100644 index 00000000..6c1329fd --- /dev/null +++ b/src/main/java/com/peanut/modules/common/dao/TrainingToUserDao.java @@ -0,0 +1,9 @@ +package com.peanut.modules.common.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.peanut.modules.common.entity.TrainingToUser; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface TrainingToUserDao extends BaseMapper { +} diff --git a/src/main/java/com/peanut/modules/common/entity/TrainingClass.java b/src/main/java/com/peanut/modules/common/entity/TrainingClass.java new file mode 100644 index 00000000..ecab41b1 --- /dev/null +++ b/src/main/java/com/peanut/modules/common/entity/TrainingClass.java @@ -0,0 +1,59 @@ +package com.peanut.modules.common.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import java.math.BigDecimal; +import java.util.Date; + +@Data +@TableName("training_class") +public class TrainingClass { + + @TableId + private Integer id; + + //标题 + private String title; + + //描述 + private String des; + + //类型 1线上2线下 + private String type; + + //年份 + private String year; + + //详情图片 + private String icon; + + //报名开关 0可报名1不可报名 + private Integer singupFlag; + + //费用 + private BigDecimal fee; + + //vip费用 + private BigDecimal vipFee; + + //svip费用 + private BigDecimal svipFee; + + //湖粉费用 + private BigDecimal huFee; + + //排序 + private Integer sort; + + private Date createTime; + + @TableLogic + private Integer delFlag; + + @TableField(exist = false) + private int isJoin; + +} diff --git a/src/main/java/com/peanut/modules/common/entity/TrainingToUser.java b/src/main/java/com/peanut/modules/common/entity/TrainingToUser.java new file mode 100644 index 00000000..16d21b00 --- /dev/null +++ b/src/main/java/com/peanut/modules/common/entity/TrainingToUser.java @@ -0,0 +1,29 @@ +package com.peanut.modules.common.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import java.util.Date; + +@Data +@TableName("training_to_user") +public class TrainingToUser { + + @TableId + private Integer id; + + private Integer userId; + + private Integer trainingId; + + private Date createTime; + + @TableLogic + private Integer delFlag; + + @TableField(exist = false) + private MyUserEntity user; + +} diff --git a/src/main/java/com/peanut/modules/common/service/TrainingClassService.java b/src/main/java/com/peanut/modules/common/service/TrainingClassService.java new file mode 100644 index 00000000..5b2b52e9 --- /dev/null +++ b/src/main/java/com/peanut/modules/common/service/TrainingClassService.java @@ -0,0 +1,7 @@ +package com.peanut.modules.common.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.peanut.modules.common.entity.TrainingClass; + +public interface TrainingClassService extends IService { +} diff --git a/src/main/java/com/peanut/modules/common/service/TrainingToUserService.java b/src/main/java/com/peanut/modules/common/service/TrainingToUserService.java new file mode 100644 index 00000000..8111b312 --- /dev/null +++ b/src/main/java/com/peanut/modules/common/service/TrainingToUserService.java @@ -0,0 +1,7 @@ +package com.peanut.modules.common.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.peanut.modules.common.entity.TrainingToUser; + +public interface TrainingToUserService extends IService { +} diff --git a/src/main/java/com/peanut/modules/common/service/impl/TrainingClassServiceImpl.java b/src/main/java/com/peanut/modules/common/service/impl/TrainingClassServiceImpl.java new file mode 100644 index 00000000..d21d25ac --- /dev/null +++ b/src/main/java/com/peanut/modules/common/service/impl/TrainingClassServiceImpl.java @@ -0,0 +1,13 @@ +package com.peanut.modules.common.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.peanut.modules.common.dao.TrainingClassDao; +import com.peanut.modules.common.entity.TrainingClass; +import com.peanut.modules.common.service.TrainingClassService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +@Slf4j +@Service("commonTrainingClassService") +public class TrainingClassServiceImpl extends ServiceImpl implements TrainingClassService { +} diff --git a/src/main/java/com/peanut/modules/common/service/impl/TrainingToUserServiceImpl.java b/src/main/java/com/peanut/modules/common/service/impl/TrainingToUserServiceImpl.java new file mode 100644 index 00000000..c3f41eab --- /dev/null +++ b/src/main/java/com/peanut/modules/common/service/impl/TrainingToUserServiceImpl.java @@ -0,0 +1,13 @@ +package com.peanut.modules.common.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.peanut.modules.common.dao.TrainingToUserDao; +import com.peanut.modules.common.entity.TrainingToUser; +import com.peanut.modules.common.service.TrainingToUserService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +@Slf4j +@Service("commonTrainingToUserService") +public class TrainingToUserServiceImpl extends ServiceImpl implements TrainingToUserService { +} diff --git a/src/main/java/com/peanut/modules/master/controller/TrainingClassController.java b/src/main/java/com/peanut/modules/master/controller/TrainingClassController.java new file mode 100644 index 00000000..2d4d8fd0 --- /dev/null +++ b/src/main/java/com/peanut/modules/master/controller/TrainingClassController.java @@ -0,0 +1,95 @@ +package com.peanut.modules.master.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.peanut.common.utils.R; +import com.peanut.modules.common.entity.MyUserEntity; +import com.peanut.modules.common.entity.TrainingClass; +import com.peanut.modules.common.entity.TrainingToUser; +import com.peanut.modules.common.service.MyUserService; +import com.peanut.modules.common.service.TrainingClassService; +import com.peanut.modules.common.service.TrainingToUserService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.Map; + +/** + * 培训班管理 + */ +@Slf4j +@RestController("masterTrainingClass") +@RequestMapping("master/trainingClass") +public class TrainingClassController { + + @Autowired + private TrainingClassService trainingClassService; + @Autowired + private TrainingToUserService trainingToUserService; + @Autowired + private MyUserService userService; + + //新建培训班 + @RequestMapping("/addTrainingClass") + public R addTrainingClass(@RequestBody TrainingClass trainingClass) { + trainingClassService.save(trainingClass); + return R.ok(); + } + + //修改培训班 + @RequestMapping("/editTrainingClass") + public R editTrainingClass(@RequestBody TrainingClass trainingClass) { + trainingClassService.updateById(trainingClass); + return R.ok(); + } + + //培训班列表 + @RequestMapping("/trainingClassList") + public R trainingClassList(@RequestBody Map params) { + Page trainingClassList = trainingClassService.page(new Page<>( + Long.parseLong(params.get("current").toString()), Long.parseLong(params.get("limit").toString())),new LambdaQueryWrapper() + .like(StringUtils.isNotEmpty(params.get("title").toString()),TrainingClass::getTitle,params.get("title")) + .eq(StringUtils.isNotEmpty(params.get("type").toString()),TrainingClass::getType,params.get("type")) + .eq(StringUtils.isNotEmpty(params.get("year").toString()),TrainingClass::getYear,params.get("year")) + .eq(StringUtils.isNotEmpty(params.get("singupFlag").toString()),TrainingClass::getSingupFlag,params.get("singupFlag")) + .orderByAsc(TrainingClass::getSort)); + return R.ok().put("trainingClassList",trainingClassList); + } + + //培训班下用户列表 + @RequestMapping("/trainingClassUserList") + public R trainingClassUserList(@RequestBody Map params) { + Page trainingClassUserList = trainingToUserService.page(new Page<>( + Long.parseLong(params.get("current").toString()), Long.parseLong(params.get("limit").toString())),new MPJLambdaWrapper() + .eq(TrainingToUser::getTrainingId,params.get("trainingId")) + .orderByDesc(TrainingToUser::getCreateTime)); + for (TrainingToUser toUser:trainingClassUserList.getRecords()){ + toUser.setUser(userService.getById(toUser.getUserId())); + } + return R.ok().put("trainingClassUserList",trainingClassUserList); + } + + //培训班添加用户 + @RequestMapping("/addUserToTrainingClass") + public R addUserToTrainingClass(@RequestBody TrainingToUser trainingToUser) { + List list = trainingToUserService.list(new LambdaQueryWrapper() + .eq(TrainingToUser::getTrainingId,trainingToUser.getTrainingId()) + .eq(TrainingToUser::getUserId,trainingToUser.getUserId())); + if (list.size()>0){ + return R.error("已存在"); + } + trainingToUserService.save(trainingToUser); + return R.ok(); + } + + + + + +}