培训班管理
This commit is contained in:
@@ -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<String,Object> params) {
|
||||
List<TrainingClass> trainingClassList = trainingClassService.list(new LambdaQueryWrapper<TrainingClass>()
|
||||
.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<TrainingToUser>()
|
||||
.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<BuyOrder>()
|
||||
.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;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -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<TrainingClass> {
|
||||
}
|
||||
@@ -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<TrainingToUser> {
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
@@ -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<TrainingClass> {
|
||||
}
|
||||
@@ -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<TrainingToUser> {
|
||||
}
|
||||
@@ -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<TrainingClassDao, TrainingClass> implements TrainingClassService {
|
||||
}
|
||||
@@ -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<TrainingToUserDao, TrainingToUser> implements TrainingToUserService {
|
||||
}
|
||||
@@ -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<String,Object> params) {
|
||||
Page<TrainingClass> trainingClassList = trainingClassService.page(new Page<>(
|
||||
Long.parseLong(params.get("current").toString()), Long.parseLong(params.get("limit").toString())),new LambdaQueryWrapper<TrainingClass>()
|
||||
.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<String,Object> params) {
|
||||
Page<TrainingToUser> trainingClassUserList = trainingToUserService.page(new Page<>(
|
||||
Long.parseLong(params.get("current").toString()), Long.parseLong(params.get("limit").toString())),new MPJLambdaWrapper<TrainingToUser>()
|
||||
.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<TrainingToUser>()
|
||||
.eq(TrainingToUser::getTrainingId,trainingToUser.getTrainingId())
|
||||
.eq(TrainingToUser::getUserId,trainingToUser.getUserId()));
|
||||
if (list.size()>0){
|
||||
return R.error("已存在");
|
||||
}
|
||||
trainingToUserService.save(trainingToUser);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user