cloud-server-account/src/main/java/com/dsh/account/entity/Coach.java
New file @@ -0,0 +1,118 @@ package com.dsh.account.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import java.io.Serializable; import java.util.Date; /** * <p> * 教练 * </p> * * @author jqs * @since 2023-07-05 */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName("t_coach") public class Coach extends Model<Coach> { private static final long serialVersionUID = 1L; /** * 主键 */ @TableId(value = "id", type = IdType.AUTO) private Integer id; /** * 省 */ private String province; /** * 省编号 */ private String provinceCode; /** * 市 */ private String city; /** * 市编号 */ private String cityCode; /** * 城市管理员id */ private Integer cityManagerId; /** * 教练类型id */ private Integer coachTypeId; /** * 姓名 */ private String name; /** * 生日 */ private Date birthday; /** * 性别(1=男,2=女) */ private Integer gender; /** * 电话 */ private String phone; /** * 身份证号码 */ private String idcard; /** * 身高(厘米) */ private Double height; /** * 体重(KG) */ private Double weight; /** * 毕业院校 */ private String graduateSchool; /** * 毕业证照片 */ private String diploma; /** * 资格证书(多个逗号分隔) */ private String certificate; /** * 证书照片 */ private String certificateImg; /** * 状态(1=正常,2=冻结,3=删除) */ private Integer state; /** * 添加时间 */ private Date insertTime; @Override protected Serializable pkVal() { return this.id; } } cloud-server-account/src/main/java/com/dsh/account/entity/CoachType.java
New file @@ -0,0 +1,49 @@ package com.dsh.account.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import java.io.Serializable; /** * <p> * 教练类型 * </p> * * @author jqs * @since 2023-07-05 */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName("t_coach_type") public class CoachType extends Model<CoachType> { private static final long serialVersionUID = 1L; /** * 主键 */ @TableId(value = "id", type = IdType.AUTO) private Integer id; /** * 类型名称 */ private String name; /** * 状态(1=正常,2=冻结,3=删除) */ private Integer state; @Override protected Serializable pkVal() { return this.id; } } cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java
@@ -25,7 +25,7 @@ StuWithCoursesListVo getStuOfCoursesDetails(@RequestParam("stuId") Integer stuId, @RequestParam("appUserId") Integer appUserId); @PostMapping("/coursePack/continuingCourse") @PostMapping("/base/coursePack/continuingCourse") StudentOfCourseVo getStudentCourse(@RequestParam("courseId") Integer courseId, @RequestParam("stuId") Integer stuId, @RequestParam("appUserId") Integer appUserId); cloud-server-account/src/main/java/com/dsh/account/mapper/CoachMapper.java
New file @@ -0,0 +1,16 @@ package com.dsh.account.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.dsh.account.entity.Coach; /** * <p> * 教练 Mapper 接口 * </p> * * @author jqs * @since 2023-07-05 */ public interface CoachMapper extends BaseMapper<Coach> { } cloud-server-account/src/main/java/com/dsh/account/mapper/CoachTypeMapper.java
New file @@ -0,0 +1,16 @@ package com.dsh.account.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.dsh.account.entity.CoachType; /** * <p> * 教练类型 Mapper 接口 * </p> * * @author jqs * @since 2023-07-05 */ public interface CoachTypeMapper extends BaseMapper<CoachType> { } cloud-server-account/src/main/java/com/dsh/account/service/CoachService.java
New file @@ -0,0 +1,16 @@ package com.dsh.account.service; import com.baomidou.mybatisplus.extension.service.IService; import com.dsh.account.entity.Coach; /** * <p> * 教练 服务类 * </p> * * @author jqs * @since 2023-07-05 */ public interface CoachService extends IService<Coach> { } cloud-server-account/src/main/java/com/dsh/account/service/CoachTypeService.java
New file @@ -0,0 +1,16 @@ package com.dsh.account.service; import com.baomidou.mybatisplus.extension.service.IService; import com.dsh.account.entity.CoachType; /** * <p> * 教练类型 服务类 * </p> * * @author jqs * @since 2023-07-05 */ public interface CoachTypeService extends IService<CoachType> { } cloud-server-account/src/main/java/com/dsh/account/service/impl/CoachServiceImpl.java
New file @@ -0,0 +1,20 @@ package com.dsh.account.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.dsh.account.entity.Coach; import com.dsh.account.mapper.CoachMapper; import com.dsh.account.service.CoachService; import org.springframework.stereotype.Service; /** * <p> * 教练 服务实现类 * </p> * * @author jqs * @since 2023-07-05 */ @Service public class CoachServiceImpl extends ServiceImpl<CoachMapper, Coach> implements CoachService { } cloud-server-account/src/main/java/com/dsh/account/service/impl/CoachTypeServiceImpl.java
New file @@ -0,0 +1,20 @@ package com.dsh.account.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.dsh.account.entity.CoachType; import com.dsh.account.mapper.CoachTypeMapper; import com.dsh.account.service.CoachTypeService; import org.springframework.stereotype.Service; /** * <p> * 教练类型 服务实现类 * </p> * * @author jqs * @since 2023-07-05 */ @Service public class CoachTypeServiceImpl extends ServiceImpl<CoachTypeMapper, CoachType> implements CoachTypeService { } cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java
@@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.dsh.account.entity.Coach; import com.dsh.account.entity.TAppUser; import com.dsh.account.entity.TStudent; import com.dsh.account.feignclient.activity.IntroduceRewardsClient; @@ -22,6 +23,7 @@ import com.dsh.account.feignclient.other.model.StoreInfo; import com.dsh.account.feignclient.other.model.StoreLonLatList; import com.dsh.account.feignclient.other.model.SysNotice; import com.dsh.account.mapper.CoachMapper; import com.dsh.account.mapper.TAppUserMapper; import com.dsh.account.mapper.TStudentMapper; import com.dsh.account.model.vo.classDetails.classInsVo.ClassDetailsInsVo; @@ -90,6 +92,9 @@ @Autowired private TAppUserMapper tauMapper; @Autowired private CoachMapper coachMapper; @Override public void addStuOfAppUser(StuDetailsReq stu,Integer appUserId) { @@ -186,9 +191,27 @@ CourseDetailsOfContinuationResp resp = new CourseDetailsOfContinuationResp(); StudentOfCourseVo studentCourse = couPayClient.getStudentCourse(lessonId,stuId,appUserId); resp.setCoursePackageId(studentCourse.getCoursePackageId()); resp.setStuId(stuId); resp.setPackageImg(studentCourse.getPackageImg()); resp.setCourseName(studentCourse.getCourseName()); Coach coach = coachMapper.selectById(studentCourse.getCoachId()); resp.setTeacherName(coach.getName()); resp.setCourseWeek(studentCourse.getCourseWeek()); resp.setCourseTime(studentCourse.getCourseTime()); StoreDetailOfCourse courseOfStore = storeClient.getCourseOfStore(studentCourse.getStoreId()); resp.setStoreName(courseOfStore.getStoreName()); resp.setStoreAddr(courseOfStore.getStoreAddr()); resp.setTypeList(studentCourse.getTypeList()); TStudent tStudent = this.baseMapper.selectById(stuId); resp.setStuName(tStudent.getName()); resp.setStuPhone(tStudent.getPhone()); resp.setStuAge(DateUtil.age(tStudent.getBirthday())); resp.setAmount(studentCourse.getAmount()); resp.setVipAmount(studentCourse.getVipAmount()); resp.setWpGold(studentCourse.getWpGold()); return resp; } cloud-server-account/src/main/resources/mapper/CoachMapper.xml
New file @@ -0,0 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.dsh.account.mapper.CoachMapper"> </mapper> cloud-server-account/src/main/resources/mapper/CoachTypeMapper.xml
New file @@ -0,0 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.dsh.account.mapper.CoachTypeMapper"> </mapper> cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java
@@ -3,12 +3,17 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.dsh.course.entity.TCoursePackage; import com.dsh.course.entity.TCoursePackageDiscount; import com.dsh.course.entity.TCoursePackagePayment; import com.dsh.course.feignclient.model.*; import com.dsh.course.model.dto.DiscountJsonDto; import com.dsh.course.service.TCoursePackageDiscountService; import com.dsh.course.service.TCoursePackagePaymentService; import com.dsh.course.service.TCoursePackageService; import com.dsh.course.util.DateUtil; import com.dsh.course.util.StrUtils; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import io.swagger.annotations.Api; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -36,6 +41,9 @@ @Autowired private TCoursePackageService tcpService; @Autowired private TCoursePackageDiscountService tcpdService; private final SimpleDateFormat format = new SimpleDateFormat("MM-dd HH:mm"); @@ -208,24 +216,38 @@ } courseVo.setCourseTime(coursePackage.getClassStartTime()+"-"+coursePackage.getClassEndTime()); // TODO: 2023/6/30 查询会员折扣数据 String payType = tCoursePackagePayment.getPayType(); BigDecimal cashPayment = tCoursePackagePayment.getCashPayment(); double cashPaymentValue = cashPayment.doubleValue(); Integer playPaiCoin = tCoursePackagePayment.getPlayPaiCoin(); TCoursePackageDiscount coursePackageDiscount = tcpdService.getOne(new QueryWrapper<TCoursePackageDiscount>() .eq("coursePackageId",coursePackage.getId() ) .eq("type",1) .eq("auditStatus",2)); ObjectMapper objectMapper = new ObjectMapper(); String content = coursePackageDiscount.getContent(); double discountMember = 0.0; DiscountJsonDto discountJsonDto = null; try { discountJsonDto = objectMapper.readValue(content, DiscountJsonDto.class); discountMember = discountJsonDto.getDiscountMember(); } catch (JsonProcessingException e) { throw new RuntimeException(e); } switch (payType) { case "1;2": courseVo.setAmount(cashPaymentValue); courseVo.setVipAmount(discountMember); courseVo.setWpGold(playPaiCoin); break; case "1": courseVo.setAmount(cashPaymentValue); courseVo.setVipAmount(discountMember); break; case "2": courseVo.setWpGold(playPaiCoin); break; } courseVo.setStoreId(coursePackage.getStoreId()); } cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackageDiscount.java
@@ -1,8 +1,5 @@ package com.dsh.course.entity; import java.util.Date; import java.io.Serializable; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -10,6 +7,8 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import java.util.Date; /** * <p> @@ -46,7 +45,7 @@ */ private Integer type; /** * 折扣优惠规则JSON * 折扣优惠规则JSON ->详见 DiscountJsonDto类 */ private String content; /** cloud-server-course/src/main/java/com/dsh/course/feignclient/model/StudentOfCourseVo.java
@@ -8,37 +8,59 @@ @Data public class StudentOfCourseVo { /** * 课包id */ @ApiModelProperty(value = "课包id") private Integer coursePackageId; /** * 课包封面图 */ @ApiModelProperty(value = "课包封面图") private String packageImg; /** * 课包名称 */ @ApiModelProperty(value = "课包名称") private String courseName; /** * 授课老师/教练 */ @ApiModelProperty(value = "授课老师/教练") private Integer coachId; /** * 上课周 */ @ApiModelProperty(value = "上课周 例如:每周二") private String courseWeek; /** * 上课时间 */ @ApiModelProperty(value = "上课时间:例如 14:00-16:00") private String courseTime; /** * 课时列表 */ @ApiModelProperty(value = "课时列表: 50 70 90") private List<CourseHoursType> typeList; /** * 支付价格 */ @ApiModelProperty(value = "支付价格") private double amount; @ApiModelProperty(value = "会员价") /** * vip价格 */ @ApiModelProperty(value = "vip价格") private double vipAmount; /** * 玩湃币 */ @ApiModelProperty(value = "玩湃币") private Integer wpGold; /** * 门店id */ @ApiModelProperty(value = "门店id") private Integer storeId; cloud-server-course/src/main/java/com/dsh/course/model/dto/DiscountJsonDto.java
New file @@ -0,0 +1,59 @@ package com.dsh.course.model.dto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * 折扣类型json字符串封装 */ @Data public class DiscountJsonDto { /** * type为1,为会员折扣现金支付金额;type为3,为限时折扣现金支付金额 */ @ApiModelProperty(value = "type为1,为会员折扣现金支付金额 type为3,为限时折扣现金支付金额") private double discountMember; /** * 会员续课现金支付金额 */ @ApiModelProperty(value = "会员续课现金支付金额") private double continuingMember; /** * 用户续课现金支付金额 */ @ApiModelProperty(value = "用户续课现金支付金额") private double continuingUser; /** * 有效期开始时间(2023-01-01) */ @ApiModelProperty(value = "有效期开始时间") private String lifespanStart; /** * 有效期结束时间 */ @ApiModelProperty(value = "有效期结束时间") private String lifespanEnd; /** * 赠送课时数 */ @ApiModelProperty(value = "赠送课时数") private Integer classHours; /** * 周数 (1;2;5) */ @ApiModelProperty(value = "周数") private String weekNum; /** * 折扣时间 开始时间(08:00) */ @ApiModelProperty(value = "折扣时间 开始时间") private String timeFrameStart; /** * 折扣时间 结束时间 */ @ApiModelProperty(value = "折扣时间 结束时间") private String timeFrameEnd; } cloud-server-management/src/main/java/com/dsh/course/mapper/AgreementMapper.java
@@ -2,8 +2,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.dsh.course.entity.Agreement; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @Mapper public interface AgreementMapper extends BaseMapper<Agreement> {