From f95325fd2635a9af08c0acac70e70379978d128a Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期一, 10 七月 2023 19:10:33 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- cloud-server-course/src/main/java/com/dsh/course/util/DateTimeHelper.java | 26 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageController.java | 37 + cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/RechargePayRequest.java | 19 cloud-server-account/src/main/resources/mapper/UserIntegralChangesMapper.xml | 6 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java | 12 cloud-server-account/src/main/java/com/dsh/AccountApplication.java | 6 cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/PointMallDetailsResponse.java | 52 ++ cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java | 20 cloud-server-account/src/main/java/com/dsh/account/service/UserIntegralChangesService.java | 19 cloud-server-course/src/main/java/com/dsh/course/feignclient/CoursePaymentClient.java | 3 cloud-server-competition/src/main/java/com/dsh/competition/controller/UserCompetitionController.java | 4 cloud-server-account/src/main/java/com/dsh/account/service/impl/UserIntegralChangesServiceImpl.java | 99 ++++ cloud-server-other/src/main/java/com/dsh/other/entity/StoredValueConfig.java | 93 ++++ cloud-server-other/src/main/java/com/dsh/other/feignclient/RechargeConfigClient.java | 18 cloud-server-other/src/main/java/com/dsh/other/service/StoredValueConfigService.java | 16 cloud-server-account/src/main/java/com/dsh/account/service/RechargeRecordsService.java | 7 cloud-server-course/src/main/java/com/dsh/course/model/vo/response/WeekLimitedResponse.java | 54 ++ cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java | 131 +++++ cloud-server-account/src/main/java/com/dsh/account/mapper/UserIntegralChangesMapper.java | 16 cloud-server-course/src/main/java/com/dsh/course/feignclient/other/StoreClient.java | 5 cloud-server-other/src/main/java/com/dsh/other/controller/StoredValueConfigController.java | 79 +++ cloud-server-course/src/main/java/com/dsh/course/model/dto/DiscountJsonDto.java | 6 cloud-server-account/src/main/java/com/dsh/account/enums/RechargeRecordEnum.java | 10 cloud-server-other/src/main/java/com/dsh/other/feignclient/model/GetDistanceVo.java | 19 cloud-server-other/src/main/java/com/dsh/other/mapper/StoredValueConfigMapper.java | 16 cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/ArrangeResponse.java | 16 cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/ClasspaymentRequest.java | 4 cloud-server-account/src/main/java/com/dsh/account/feignclient/other/RechargeConfigClient.java | 17 cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/RechargeDetailsVo.java | 32 + cloud-server-other/src/main/java/com/dsh/other/service/impl/StoredValueConfigServiceImpl.java | 20 cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java | 3 cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackageDiscountService.java | 3 cloud-server-other/src/main/java/com/dsh/other/feignclient/StoreClient.java | 9 cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/MallRequest.java | 25 + cloud-server-other/src/main/resources/mapper/StoredValueConfigMapper.xml | 6 cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/RechargeCentVo.java | 17 cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java | 127 ++-- cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/IntegralDetailsResponse.java | 35 + cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java | 89 +++ cloud-server-account/src/main/java/com/dsh/account/entity/UserIntegralChanges.java | 68 ++ cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java | 111 ++++ cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java | 6 cloud-server-course/src/main/java/com/dsh/course/feignclient/other/model/GetDistanceVo.java | 19 43 files changed, 1,281 insertions(+), 99 deletions(-) diff --git a/cloud-server-account/src/main/java/com/dsh/AccountApplication.java b/cloud-server-account/src/main/java/com/dsh/AccountApplication.java index de0ceac..e73e8dd 100644 --- a/cloud-server-account/src/main/java/com/dsh/AccountApplication.java +++ b/cloud-server-account/src/main/java/com/dsh/AccountApplication.java @@ -28,7 +28,11 @@ @MapperScan("com.dsh.account.mapper") public class AccountApplication { public static void main(String[] args) { - SpringApplication.run(AccountApplication.class, args); + try { + SpringApplication.run(AccountApplication.class, args); + }catch (Exception e){ + e.printStackTrace(); + } } @Bean diff --git a/cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java b/cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java index c08ab90..73175a8 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java +++ b/cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java @@ -3,20 +3,24 @@ import com.dsh.account.entity.TAppUser; import com.dsh.account.feignclient.other.SysLogClient; -import com.dsh.account.model.vo.userBenefitDetail.AppUserDetailsVo; -import com.dsh.account.model.vo.userBenefitDetail.BillingDetailsVo; -import com.dsh.account.model.vo.userBenefitDetail.IndexOfUserBenefirVo; +import com.dsh.account.model.vo.userBenefitDetail.*; +import com.dsh.account.service.RechargeRecordsService; import com.dsh.account.service.TAppUserService; +import com.dsh.account.service.UserIntegralChangesService; import com.dsh.account.util.ResultUtil; import com.dsh.account.util.TokenUtil; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.text.SimpleDateFormat; +import java.util.List; /** * 使用福利 控制器 @@ -35,6 +39,12 @@ @Resource private SysLogClient slClient; + + @Autowired + private RechargeRecordsService rechargeRService; + + @Autowired + private UserIntegralChangesService uicService; private final SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd"); @@ -145,7 +155,7 @@ @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(value = "年月", name = "yearMonth", required = true, dataType = "string"), - @ApiImplicitParam(value = "记录id", name = "recordId", required = true, dataType = "int"), + @ApiImplicitParam(value = "记录(1充值 2扣除)", name = "recordId", required = true, dataType = "int"), }) public ResultUtil<BillingDetailsVo> getUserBillingDetails(String yearMonth,Integer recordId){ try { @@ -153,7 +163,116 @@ if(null == appUserId){ return ResultUtil.tokenErr(); } - return ResultUtil.success(tauService.queryUserBillingDetails(yearMonth,recordId)); + return ResultUtil.success(tauService.queryUserBillingDetails(yearMonth,recordId,appUserId)); + }catch (Exception e){ + return ResultUtil.runErr(); + } + } + + + @ResponseBody + @PostMapping("/api/useBenefit/voucherDetail") + @ApiOperation(value = "充值明细", tags = {"APP-使用福利"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + @ApiImplicitParam(value = "年月", name = "yearMonth", required = true, dataType = "string"), + @ApiImplicitParam(value = "记录(1充值 2扣除)", name = "recordId", required = true, dataType = "int"), + }) + public ResultUtil<RechargeDetailsVo> wpGoldRechargeRecord(String yearMonth, Integer recordId){ + try { + Integer appUserId = tokenUtil.getUserIdFormRedis(); + if(null == appUserId){ + return ResultUtil.tokenErr(); + } + return ResultUtil.success(rechargeRService.getAppUserRechargeRecord(yearMonth,recordId,appUserId)); + }catch (Exception e){ + return ResultUtil.runErr(); + } + } + + + @ResponseBody + @PostMapping("/api/useBenefit/voucherCenter") + @ApiOperation(value = "充值中心", tags = {"APP-使用福利"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + }) + public ResultUtil<List<RechargeCentVo>> rechargeCenterConfig(){ + try { + Integer appUserId = tokenUtil.getUserIdFormRedis(); + if(null == appUserId){ + return ResultUtil.tokenErr(); + } + return ResultUtil.success(tauService.getSysRechargeConfig(appUserId)); + }catch (Exception e){ + return ResultUtil.runErr(); + } + } + + /** + * 充值中心-支付 + */ + @ResponseBody + @PostMapping("/api/useBenefit/payment") + @ApiOperation(value = "充值中心-支付", tags = {"APP-使用福利"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + }) + public ResultUtil rechargeCenPayment(RechargePayRequest request){ + try { + Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(); + if(null == userIdFormRedis){ + return ResultUtil.tokenErr(); + } + return rechargeRService.rechargeCenPayment(userIdFormRedis,request); + }catch (Exception e){ + return ResultUtil.runErr(); + } + + } + + + /** + * 积分商城 + */ + @ResponseBody + @PostMapping("/api/useBenefit/integralMallList") + @ApiOperation(value = "积分商城", tags = {"APP-使用福利"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + }) + public ResultUtil<PointMallDetailsResponse> pointsMallList(MallRequest request){ + try { + Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(); + if(null == userIdFormRedis){ + return ResultUtil.tokenErr(); + } + // TODO: 2023/7/10 积分商品列表查询 + return ResultUtil.success(); + }catch (Exception e){ + return ResultUtil.runErr(); + } + } + + + /** + * 积分明细 + */ + @ResponseBody + @PostMapping("/api/useBenefit/integralDetails") + @ApiOperation(value = "积分明细", tags = {"APP-使用福利"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + @ApiImplicitParam(value = "年月", name = "yearMonth", required = true, dataType = "string"), + @ApiImplicitParam(value = "记录(1充值 2扣除)", name = "recordId", required = true, dataType = "int"), + }) + public ResultUtil<IntegralDetailsResponse> pointDetails(String yearMonth, Integer recordId){ + try { + Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(); + if(null == userIdFormRedis){ + return ResultUtil.tokenErr(); + } + return ResultUtil.success(uicService.queryUserPointsDetails(yearMonth,recordId,userIdFormRedis)); }catch (Exception e){ return ResultUtil.runErr(); } diff --git a/cloud-server-account/src/main/java/com/dsh/account/entity/UserIntegralChanges.java b/cloud-server-account/src/main/java/com/dsh/account/entity/UserIntegralChanges.java new file mode 100644 index 0000000..7930442 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/entity/UserIntegralChanges.java @@ -0,0 +1,68 @@ +package com.dsh.account.entity; + +import com.baomidou.mybatisplus.enums.IdType; +import java.util.Date; +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableName; +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotations.Version; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * <p> + * 用户积分变动记录 + * </p> + * + * @author jqs + * @since 2023-07-10 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("t_user_integral_changes") +public class UserIntegralChanges extends Model<UserIntegralChanges> { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + /** + * 用户id + */ + private Integer appUserId; + /** + * 积分类型(1=赠送积分,2=兑换商品,3=完成课后练习,4=观看教学视频) + */ + private Integer type; + /** + * 历史积分 + */ + private Integer oldIntegral; + /** + * 新积分 + */ + private Integer newIntegral; + /** + * 备注 + */ + private String remark; + /** + * 添加时间 + */ + private Date insertTime; + + + @Override + protected Serializable pkVal() { + return this.id; + } + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/enums/RechargeRecordEnum.java b/cloud-server-account/src/main/java/com/dsh/account/enums/RechargeRecordEnum.java index a19401c..e7c77b6 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/enums/RechargeRecordEnum.java +++ b/cloud-server-account/src/main/java/com/dsh/account/enums/RechargeRecordEnum.java @@ -14,13 +14,15 @@ CANCEL_VENUE_RESERVATION("取消场地预约"), - ; - String msg; - RechargeRecordEnum() { - } + ; + final String msg; RechargeRecordEnum(String msg) { this.msg = msg; } + + public String getMsg() { + return msg; + } } diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java index 0b29b58..55af25f 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java @@ -30,4 +30,7 @@ @PostMapping("/base/coursePack/courseOfPurchased") List<PurchaseVo> getAppUsersCourseData(@RequestBody Integer appUserId); + + @PostMapping("/base/coursePack/allPaymentCourseList") + public List<TCoursePackagePayment> getAppuserCourseList(@RequestBody Integer appUserId); } diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/RechargeConfigClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/RechargeConfigClient.java new file mode 100644 index 0000000..141b212 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/RechargeConfigClient.java @@ -0,0 +1,17 @@ +package com.dsh.account.feignclient.other; + + +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; + +import java.util.List; +import java.util.Map; + + +@FeignClient(value = "mb-cloud-other") +public interface RechargeConfigClient { + + @PostMapping("/base/stored/getRechargeArrange") + List<Map<String,Object>> getRechargeConfig(); + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/mapper/UserIntegralChangesMapper.java b/cloud-server-account/src/main/java/com/dsh/account/mapper/UserIntegralChangesMapper.java new file mode 100644 index 0000000..5e9a97d --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/mapper/UserIntegralChangesMapper.java @@ -0,0 +1,16 @@ +package com.dsh.account.mapper; + +import com.dsh.account.entity.UserIntegralChanges; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + * <p> + * 用户积分变动记录 Mapper 接口 + * </p> + * + * @author jqs + * @since 2023-07-10 + */ +public interface UserIntegralChangesMapper extends BaseMapper<UserIntegralChanges> { + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/ClasspaymentRequest.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/ClasspaymentRequest.java index 02166b6..5604edd 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/ClasspaymentRequest.java +++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/ClasspaymentRequest.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.math.BigDecimal; + @Data public class ClasspaymentRequest { @@ -25,5 +27,7 @@ @ApiModelProperty(value = "课时id") private Long courseConfigId; + @ApiModelProperty(value = "支付金额") + private BigDecimal payAmount; } diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/ArrangeResponse.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/ArrangeResponse.java new file mode 100644 index 0000000..c946607 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/ArrangeResponse.java @@ -0,0 +1,16 @@ +package com.dsh.account.model.vo.userBenefitDetail; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class ArrangeResponse { + + @ApiModelProperty(value = "玩湃币") + private String wpGold; + + @ApiModelProperty(value = "对应充值金额") + private String amount; + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/IntegralDetailsResponse.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/IntegralDetailsResponse.java new file mode 100644 index 0000000..32a6fed --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/IntegralDetailsResponse.java @@ -0,0 +1,35 @@ +package com.dsh.account.model.vo.userBenefitDetail; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class IntegralDetailsResponse { + + @ApiModelProperty(value = "可用积分") + private Integer wpGold; + + @ApiModelProperty(value = "记录列表") + private List<IntegralsData> detailList; + + @Data + public static class IntegralsData{ + + @ApiModelProperty(value = "名称") + private String consumeName; + + @ApiModelProperty(value = "时间") + private String consumeTime; + + @ApiModelProperty(value = "金额 例如 -90 ") + private String consumeAmount; + + @ApiModelProperty(value = "1扣减 2增加") + private Integer detailsType; + + } + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/MallRequest.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/MallRequest.java new file mode 100644 index 0000000..89eb87c --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/MallRequest.java @@ -0,0 +1,25 @@ +package com.dsh.account.model.vo.userBenefitDetail; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class MallRequest { + + @ApiModelProperty(value = "经度") + private String lon; + + @ApiModelProperty(value = "纬度") + private String lat; + + @ApiModelProperty(value = "排序规则 1积分高到低 2积分从低到高 3兑换从高到低") + private Integer rank; + + @ApiModelProperty(value = "商品类型: 1实物 2课包 3门票 4优惠券") + private Integer goodsType; + + @ApiModelProperty(value = "搜索内容") + private String search; + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/PointMallDetailsResponse.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/PointMallDetailsResponse.java new file mode 100644 index 0000000..287f537 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/PointMallDetailsResponse.java @@ -0,0 +1,52 @@ +package com.dsh.account.model.vo.userBenefitDetail; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +public class PointMallDetailsResponse { + + @ApiModelProperty(value = "头像") + private String headImg; + + @ApiModelProperty(value = "姓名") + private String name; + + @ApiModelProperty(value = "可用积分") + private Integer integral; + + @ApiModelProperty(value = "商品列表") + private List<Goods> goods; + + + @Data + public static class Goods{ + + @ApiModelProperty(value = "商品id") + private Integer goodId; + + @ApiModelProperty(value = "商品封面图") + private String goodImg; + + @ApiModelProperty(value = "商品名称") + private String goodName; + + @ApiModelProperty(value = "金额") + private BigDecimal amount; + + @ApiModelProperty(value = "积分") + private Integer integral; + + @ApiModelProperty(value = "适用范围: 1 仅限会员 2仅限学员 3全部用户") + private Integer belongsType; + + @ApiModelProperty(value = "商品类型: 1实物 2课包 3门票 4优惠券") + private Integer goodsType; + + } + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/RechargeCentVo.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/RechargeCentVo.java new file mode 100644 index 0000000..a692297 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/RechargeCentVo.java @@ -0,0 +1,17 @@ +package com.dsh.account.model.vo.userBenefitDetail; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class RechargeCentVo { + + @ApiModelProperty(value = "玩湃币") + private String wpGold; + + @ApiModelProperty(value = "对应充值金额") + private String amount; + + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/RechargeDetailsVo.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/RechargeDetailsVo.java new file mode 100644 index 0000000..88c542b --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/RechargeDetailsVo.java @@ -0,0 +1,32 @@ +package com.dsh.account.model.vo.userBenefitDetail; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class RechargeDetailsVo { + + @ApiModelProperty(value = "剩余玩湃币") + private Integer wpGold; + + @ApiModelProperty(value = "记录列表") + private List<RechargesDetail> detailList; + + @Data + public static class RechargesDetail{ + + @ApiModelProperty(value = "名称") + private String consumeName; + + @ApiModelProperty(value = "时间") + private String consumeTime; + + @ApiModelProperty(value = "金额 例如 -90 ") + private String consumeAmount; + + } + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/RechargePayRequest.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/RechargePayRequest.java new file mode 100644 index 0000000..a46f39f --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/RechargePayRequest.java @@ -0,0 +1,19 @@ +package com.dsh.account.model.vo.userBenefitDetail; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +@Data +public class RechargePayRequest { + + + @ApiModelProperty(value = "支付方式 1微信 2支付宝") + private Integer payType; + + @ApiModelProperty(value = "支付金额") + private BigDecimal payAmount; + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/RechargeRecordsService.java b/cloud-server-account/src/main/java/com/dsh/account/service/RechargeRecordsService.java index 183fd4d..3c920de 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/service/RechargeRecordsService.java +++ b/cloud-server-account/src/main/java/com/dsh/account/service/RechargeRecordsService.java @@ -2,6 +2,9 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.dsh.account.entity.RechargeRecords; +import com.dsh.account.model.vo.userBenefitDetail.RechargeDetailsVo; +import com.dsh.account.model.vo.userBenefitDetail.RechargePayRequest; +import com.dsh.account.util.ResultUtil; /** * <p> @@ -13,4 +16,8 @@ */ public interface RechargeRecordsService extends IService<RechargeRecords> { + RechargeDetailsVo getAppUserRechargeRecord(String yearMonth, Integer recordId, Integer appUserId); + + ResultUtil rechargeCenPayment(Integer userIdFormRedis, RechargePayRequest request); + } diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java b/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java index 138a47f..5b897dc 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java +++ b/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java @@ -9,7 +9,10 @@ import com.dsh.account.model.vo.classDetails.classInsVo.ClassInfoVo; import com.dsh.account.model.vo.userBenefitDetail.BillingDetailsVo; import com.dsh.account.model.vo.userBenefitDetail.IndexOfUserBenefirVo; +import com.dsh.account.model.vo.userBenefitDetail.RechargeCentVo; import com.dsh.account.util.ResultUtil; + +import java.util.List; /** * <p> @@ -107,7 +110,7 @@ * @param recordId 记录id * @return */ - BillingDetailsVo queryUserBillingDetails(String yearMonth, Integer recordId); + BillingDetailsVo queryUserBillingDetails(String yearMonth, Integer recordId,Integer appUserId); /** * 注销账号 @@ -115,4 +118,5 @@ */ void cancellation(Integer appUserId); + List<RechargeCentVo> getSysRechargeConfig(Integer appUserId); } diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/UserIntegralChangesService.java b/cloud-server-account/src/main/java/com/dsh/account/service/UserIntegralChangesService.java new file mode 100644 index 0000000..2e21559 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/service/UserIntegralChangesService.java @@ -0,0 +1,19 @@ +package com.dsh.account.service; + +import com.baomidou.mybatisplus.service.IService; +import com.dsh.account.entity.UserIntegralChanges; +import com.dsh.account.model.vo.userBenefitDetail.IntegralDetailsResponse; + +/** + * <p> + * 用户积分变动记录 服务类 + * </p> + * + * @author jqs + * @since 2023-07-10 + */ +public interface UserIntegralChangesService extends IService<UserIntegralChanges> { + + IntegralDetailsResponse queryUserPointsDetails(String yearMonth, Integer recordId, Integer userIdFormRedis); + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java index 83729db..511f7f2 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java +++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java @@ -1,10 +1,29 @@ package com.dsh.account.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.dsh.account.entity.RechargeRecords; +import com.dsh.account.entity.TAppUser; +import com.dsh.account.enums.RechargeRecordEnum; +import com.dsh.account.feignclient.course.CoursePaymentClient; +import com.dsh.account.feignclient.course.model.TCoursePackagePayment; import com.dsh.account.mapper.RechargeRecordsMapper; +import com.dsh.account.mapper.TAppUserMapper; +import com.dsh.account.model.vo.userBenefitDetail.RechargeDetailsVo; +import com.dsh.account.model.vo.userBenefitDetail.RechargePayRequest; import com.dsh.account.service.RechargeRecordsService; +import com.dsh.account.util.DateTimeHelper; +import com.dsh.account.util.ResultUtil; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; /** * <p> @@ -17,4 +36,96 @@ @Service public class RechargeRecordsServiceImpl extends ServiceImpl<RechargeRecordsMapper, RechargeRecords> implements RechargeRecordsService { + @Resource + private RechargeRecordsMapper rereMapper; + + + @Resource + private TAppUserMapper tappMapper; + + @Autowired + private CoursePaymentClient cpClient; + + + @Override + public RechargeDetailsVo getAppUserRechargeRecord(String yearMonth, Integer recordId, Integer appUserId) { + RechargeDetailsVo vo = new RechargeDetailsVo(); + List<RechargeDetailsVo.RechargesDetail> details = new ArrayList<>(); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM-dd HH:mm"); + + Date monthStart = null; + Date monthEnd = null; + if (StringUtils.hasText(yearMonth)) { + monthStart = DateTimeHelper.getCurrentIdetMouthStart(yearMonth); + monthEnd = DateTimeHelper.getCurrentIdeaMouthEnd(yearMonth); + } else { + monthStart = DateTimeHelper.getCurrentMouthStart(); + monthEnd = DateTimeHelper.getCurrentMouthEnd(); + } + + TAppUser tAppUser = tappMapper.selectById(appUserId); + if (null != tAppUser){ + vo.setWpGold(tAppUser.getPlayPaiCoins()); + }else { + vo.setWpGold(0); + } +// 1.赛事报名 + +// 2.课包购买 + List<TCoursePackagePayment> appuserCourseList = cpClient.getAppuserCourseList(appUserId); + if (appuserCourseList.size() > 0){ + for (TCoursePackagePayment tCoursePackagePayment : appuserCourseList) { + RechargeDetailsVo.RechargesDetail consumeDetail = new RechargeDetailsVo.RechargesDetail(); + consumeDetail.setConsumeName(RechargeRecordEnum.COURSE_PACKAGE_PURCHASE.getMsg() ); + consumeDetail.setConsumeTime(simpleDateFormat.format(tCoursePackagePayment.getInsertTime())); + consumeDetail.setConsumeAmount("-" + tCoursePackagePayment.getPlayPaiCoin()); + details.add(consumeDetail); + } + } +// 3.场地预约 +// 4.智慧球场 + +// 5.充值 + List<RechargeRecords> rechargeRecords = rereMapper.selectList(new QueryWrapper<RechargeRecords>() + .eq("payStatus", 2) + .eq("appUserId", appUserId) + .between("insertTime", monthStart, monthEnd)); + if (rechargeRecords.size() > 0) { + for (RechargeRecords rechargeRecord : rechargeRecords) { + RechargeDetailsVo.RechargesDetail consumeDetail = new RechargeDetailsVo.RechargesDetail(); + consumeDetail.setConsumeName(RechargeRecordEnum.RECHARGE.name() + ":" + rechargeRecord.getPlayPaiCoins()); + consumeDetail.setConsumeTime(simpleDateFormat.format(rechargeRecord.getInsertTime())); + consumeDetail.setConsumeAmount("+" + rechargeRecord.getAmount()); + details.add(consumeDetail); + } + } + vo.setDetailList(details); + return vo; + } + + @Override + public ResultUtil rechargeCenPayment(Integer userIdFormRedis, RechargePayRequest request) { + // TODO: 2023/7/10 充值支付 + switch (request.getPayType()){ + case 1: + WeChatPayment(request.getPayAmount()); + break; + case 2: + AlipayPayment(request.getPayAmount()); + break; + default: + break; + } + return ResultUtil.success(); + } + + private void AlipayPayment(BigDecimal payAmount) { + + + } + + private void WeChatPayment(BigDecimal payAmount) { + + + } } diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java index de01b85..4e6c0fb 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java +++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java @@ -14,6 +14,7 @@ import com.dsh.account.feignclient.course.model.QueryStoreList; import com.dsh.account.feignclient.course.model.StuCourseResp; import com.dsh.account.feignclient.other.ImgConfigClient; +import com.dsh.account.feignclient.other.RechargeConfigClient; import com.dsh.account.feignclient.other.StoreClient; import com.dsh.account.feignclient.other.model.Store; import com.dsh.account.feignclient.other.model.TImgConfig; @@ -32,11 +33,13 @@ import com.dsh.account.model.vo.classDetails.classInsVo.ClassInfoVo; import com.dsh.account.model.vo.userBenefitDetail.BillingDetailsVo; import com.dsh.account.model.vo.userBenefitDetail.IndexOfUserBenefirVo; +import com.dsh.account.model.vo.userBenefitDetail.RechargeCentVo; import com.dsh.account.service.TAppUserService; import com.dsh.account.util.*; import com.dsh.account.util.akeylogin.Md5Util; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.RequestBody; import javax.annotation.Resource; @@ -94,6 +97,9 @@ @Resource private RechargeRecordsMapper rrMapper; + + @Resource + private RechargeConfigClient reconMapper; @Override public ClassInfoVo queryUserOfStus(Integer id,String latitude,String longitude) { @@ -469,82 +475,55 @@ } @Override - public BillingDetailsVo queryUserBillingDetails(String yearMonth, Integer recordId) { + public BillingDetailsVo queryUserBillingDetails(String yearMonth, Integer recordId, Integer appUserId) { BillingDetailsVo vo = new BillingDetailsVo(); List<BillingDetailsVo.ConsumeDetail> details = new ArrayList<>(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM-dd HH:mm"); - if (null != yearMonth){ - - Date monthStart = DateTimeHelper.getCurrentIdetMouthStart(yearMonth); - Date monthEnd = DateTimeHelper.getCurrentIdeaMouthEnd(yearMonth); + Date monthStart = null; + Date monthEnd = null; + if (StringUtils.hasText(yearMonth)) { + monthStart = DateTimeHelper.getCurrentIdetMouthStart(yearMonth); + monthEnd = DateTimeHelper.getCurrentIdeaMouthEnd(yearMonth); + } else { + monthStart = DateTimeHelper.getCurrentMouthStart(); + monthEnd = DateTimeHelper.getCurrentMouthEnd(); + } // 1.赛事报名 // 2.课包购买 // 3.场地预约 // 4.智慧球场 // 5.年度会员 - List<VipPayment> vipPayments = vipPaymentMapper.selectList(new QueryWrapper<VipPayment>() - .eq("payStatus",2 ) - .between("insertTime",monthStart, monthEnd)); - if (vipPayments.size() > 0){ - for (VipPayment vipPayment : vipPayments) { - BillingDetailsVo.ConsumeDetail consumeDetail = new BillingDetailsVo.ConsumeDetail(); - consumeDetail.setConsumeName(RechargeRecordEnum.ANNUAL_MEMBERSHIP.name()); - consumeDetail.setConsumeTime(simpleDateFormat.format(vipPayment.getInsertTime())); - consumeDetail.setConsumeAmount("+"+vipPayment.getAmount()); - details.add(consumeDetail); - } - } -// 6.续课 -// 7.充值 - List<RechargeRecords> rechargeRecords = rrMapper.selectList(new QueryWrapper<RechargeRecords>() - .eq("payStatus", 2) - .between("insertTime",monthStart, monthEnd)); - if (rechargeRecords.size() > 0){ - for (RechargeRecords rechargeRecord : rechargeRecords) { - BillingDetailsVo.ConsumeDetail consumeDetail = new BillingDetailsVo.ConsumeDetail(); - consumeDetail.setConsumeName(RechargeRecordEnum.RECHARGE.name()+":"+rechargeRecord.getPlayPaiCoins()); - consumeDetail.setConsumeTime(simpleDateFormat.format(rechargeRecord.getInsertTime())); - consumeDetail.setConsumeAmount("+"+rechargeRecord.getAmount()); - details.add(consumeDetail); - } - } - }else { - Date currentMouthStart = DateTimeHelper.getCurrentMouthStart(); - Date currentMouthEnd = DateTimeHelper.getCurrentMouthEnd(); -// 1.赛事报名 -// 2.课包购买 -// 3.场地预约 -// 4.智慧球场 -// 5.年度会员 - List<VipPayment> vipPayments = vipPaymentMapper.selectList(new QueryWrapper<VipPayment>() - .eq("payStatus",2 ) - .between("insertTime",currentMouthStart, currentMouthEnd)); - if (vipPayments.size() > 0){ - for (VipPayment vipPayment : vipPayments) { - BillingDetailsVo.ConsumeDetail consumeDetail = new BillingDetailsVo.ConsumeDetail(); - consumeDetail.setConsumeName(RechargeRecordEnum.ANNUAL_MEMBERSHIP.name()); - consumeDetail.setConsumeTime(simpleDateFormat.format(vipPayment.getInsertTime())); - consumeDetail.setConsumeAmount("+"+vipPayment.getAmount()); - details.add(consumeDetail); - } - } -// 6.续课 -// 7.充值 - List<RechargeRecords> rechargeRecords = rrMapper.selectList(new QueryWrapper<RechargeRecords>() - .eq("payStatus", 2) - .between("insertTime",currentMouthStart, currentMouthEnd)); - if (rechargeRecords.size() > 0){ - for (RechargeRecords rechargeRecord : rechargeRecords) { - BillingDetailsVo.ConsumeDetail consumeDetail = new BillingDetailsVo.ConsumeDetail(); - consumeDetail.setConsumeName(RechargeRecordEnum.RECHARGE.name()+":"+rechargeRecord.getPlayPaiCoins()); - consumeDetail.setConsumeTime(simpleDateFormat.format(rechargeRecord.getInsertTime())); - consumeDetail.setConsumeAmount("+"+rechargeRecord.getAmount()); - details.add(consumeDetail); - } + List<VipPayment> vipPayments = vipPaymentMapper.selectList(new QueryWrapper<VipPayment>() + .eq("payStatus", 2) + .eq("appUserId", appUserId) + .between("insertTime", monthStart, monthEnd)); + if (vipPayments.size() > 0) { + for (VipPayment vipPayment : vipPayments) { + BillingDetailsVo.ConsumeDetail consumeDetail = new BillingDetailsVo.ConsumeDetail(); + consumeDetail.setConsumeName(RechargeRecordEnum.ANNUAL_MEMBERSHIP.getMsg()); + consumeDetail.setConsumeTime(simpleDateFormat.format(vipPayment.getInsertTime())); + consumeDetail.setConsumeAmount("+" + vipPayment.getAmount()); + details.add(consumeDetail); } } +// 6.续课 +// 7.充值 + List<RechargeRecords> rechargeRecords = rrMapper.selectList(new QueryWrapper<RechargeRecords>() + .eq("payStatus", 2) + .eq("appUserId", appUserId) + .between("insertTime", monthStart, monthEnd)); + if (rechargeRecords.size() > 0) { + for (RechargeRecords rechargeRecord : rechargeRecords) { + BillingDetailsVo.ConsumeDetail consumeDetail = new BillingDetailsVo.ConsumeDetail(); + consumeDetail.setConsumeName(RechargeRecordEnum.RECHARGE.getMsg() + ":" + rechargeRecord.getPlayPaiCoins()); + consumeDetail.setConsumeTime(simpleDateFormat.format(rechargeRecord.getInsertTime())); + consumeDetail.setConsumeAmount("+" + rechargeRecord.getAmount()); + details.add(consumeDetail); + } + } + vo.setDetails(details); return vo; } @@ -558,4 +537,24 @@ } } + @Override + public List<RechargeCentVo> getSysRechargeConfig(Integer appUserId) { + List<RechargeCentVo> centVos = new ArrayList<>(); + TAppUser tAppUser = this.baseMapper.selectById(appUserId); + List<Map<String, Object>> rechargeConfig = reconMapper.getRechargeConfig(); + if (rechargeConfig.size() > 0 ){ + for (Map<String, Object> stringObjectMap : rechargeConfig) { + RechargeCentVo vo = new RechargeCentVo(); + vo.setAmount("¥ "+stringObjectMap.get("money")); + if (tAppUser.getIsVip() == 1){ + vo.setWpGold(stringObjectMap.get("MemberCoins")+"币"); + }else { + vo.setWpGold(stringObjectMap.get("usersCoins")+"币"); + } + centVos.add(vo); + } + } + return centVos; + } + } diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/UserIntegralChangesServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/UserIntegralChangesServiceImpl.java new file mode 100644 index 0000000..0280cee --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/UserIntegralChangesServiceImpl.java @@ -0,0 +1,99 @@ +package com.dsh.account.service.impl; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.dsh.account.entity.TAppUser; +import com.dsh.account.entity.UserIntegralChanges; +import com.dsh.account.mapper.TAppUserMapper; +import com.dsh.account.mapper.UserIntegralChangesMapper; +import com.dsh.account.model.vo.userBenefitDetail.IntegralDetailsResponse; +import com.dsh.account.service.UserIntegralChangesService; +import com.dsh.account.util.DateTimeHelper; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * <p> + * 用户积分变动记录 服务实现类 + * </p> + * + * @author jqs + * @since 2023-07-10 + */ +@Service +public class UserIntegralChangesServiceImpl extends ServiceImpl<UserIntegralChangesMapper, UserIntegralChanges> implements UserIntegralChangesService { + + @Resource + private TAppUserMapper tauMapper; + + @Override + public IntegralDetailsResponse queryUserPointsDetails(String yearMonth, Integer recordId, Integer userIdFormRedis) { + IntegralDetailsResponse vo = new IntegralDetailsResponse(); + List<IntegralDetailsResponse.IntegralsData> details = new ArrayList<>(); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM-dd HH:mm"); + + Date monthStart = null; + Date monthEnd = null; + if (StringUtils.hasText(yearMonth)) { + monthStart = DateTimeHelper.getCurrentIdetMouthStart(yearMonth); + monthEnd = DateTimeHelper.getCurrentIdeaMouthEnd(yearMonth); + } else { + monthStart = DateTimeHelper.getCurrentMouthStart(); + monthEnd = DateTimeHelper.getCurrentMouthEnd(); + } + List<UserIntegralChanges> userIntegralChanges = this.baseMapper.selectList(new EntityWrapper<UserIntegralChanges>() + .eq("appUserId",userIdFormRedis ) + .between("insertTime",monthStart,monthEnd) + .orderBy("insertTime",false)); + if (userIntegralChanges.size() > 0 ){ + for (UserIntegralChanges userIntegralChange : userIntegralChanges) { + IntegralDetailsResponse.IntegralsData detail= new IntegralDetailsResponse.IntegralsData(); + switch (userIntegralChange.getType()){ + case 1: + detail.setConsumeAmount("+"+(userIntegralChange.getNewIntegral() - userIntegralChange.getOldIntegral())); + detail.setConsumeName("赠送积分"); + detail.setDetailsType(2); + break; + case 2: + detail.setConsumeAmount("-"+(userIntegralChange.getNewIntegral() - userIntegralChange.getOldIntegral())); + detail.setConsumeName("兑换商品"); + detail.setDetailsType(1); + break; + case 3: + detail.setConsumeAmount("+"+(userIntegralChange.getNewIntegral() - userIntegralChange.getOldIntegral())); + detail.setConsumeName("完成课后练习"); + detail.setDetailsType(2); + break; + case 4: + detail.setConsumeAmount("+"+(userIntegralChange.getNewIntegral() - userIntegralChange.getOldIntegral())); + detail.setConsumeTime(simpleDateFormat.format(userIntegralChange.getInsertTime())); + detail.setConsumeName("观看教学视频"); + detail.setDetailsType(2); + break; + default: + break; + } + detail.setConsumeTime(simpleDateFormat.format(userIntegralChange.getInsertTime())); + details.add(detail); + } + if (null != recordId){ + details = details.stream() + .filter(obj -> obj instanceof IntegralDetailsResponse.IntegralsData) + .filter(obj -> Objects.equals(obj.getDetailsType(), recordId)) + .collect(Collectors.toList()); + } + TAppUser tAppUser = tauMapper.selectById(userIdFormRedis); + vo.setWpGold(tAppUser.getIntegral()); + vo.setDetailList(details); + } + return vo; + } +} diff --git a/cloud-server-account/src/main/resources/mapper/UserIntegralChangesMapper.xml b/cloud-server-account/src/main/resources/mapper/UserIntegralChangesMapper.xml new file mode 100644 index 0000000..5f858ec --- /dev/null +++ b/cloud-server-account/src/main/resources/mapper/UserIntegralChangesMapper.xml @@ -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.UserIntegralChangesMapper"> + + +</mapper> diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/controller/UserCompetitionController.java b/cloud-server-competition/src/main/java/com/dsh/competition/controller/UserCompetitionController.java index b20a3a3..4f9111c 100644 --- a/cloud-server-competition/src/main/java/com/dsh/competition/controller/UserCompetitionController.java +++ b/cloud-server-competition/src/main/java/com/dsh/competition/controller/UserCompetitionController.java @@ -1,12 +1,8 @@ package com.dsh.competition.controller; -import com.dsh.competition.util.ResultUtil; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; - -import javax.xml.transform.Result; -import java.util.List; /** * <p> diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageController.java index 3c83277..90843b4 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageController.java +++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageController.java @@ -1,7 +1,14 @@ package com.dsh.course.controller; import com.dsh.course.entity.TCoursePackage; +import com.dsh.course.model.vo.response.WeekLimitedResponse; +import com.dsh.course.service.TCoursePackageDiscountService; import com.dsh.course.service.TCoursePackageService; +import com.dsh.course.util.ResultUtil; +import com.dsh.course.util.TokenUtil; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -16,6 +23,13 @@ @Autowired private TCoursePackageService coursePackageService; + + @Autowired + private TCoursePackageDiscountService tcpdService; + + + @Autowired + private TokenUtil tokenUtil; /** * 根据id获取课包 @@ -33,4 +47,27 @@ return null; } } + + /** + * 本周福利列表 + */ + @ResponseBody + @PostMapping("/api/useBenefit/weekLimitedBenefit") + @ApiOperation(value = "本周福利-限时折扣列表", tags = {"APP-使用福利"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + @ApiImplicitParam(name = "discountType",value = "默认显示 限时折扣 (1限时折扣 2赠送课时)") + }) + public ResultUtil<WeekLimitedResponse> thisWeeksBenefitList(Integer discountType,String lon,String lat){ + try { + Integer appUserId = tokenUtil.getUserIdFormRedis(); + if(null == appUserId){ + return ResultUtil.tokenErr(); + } + return ResultUtil.success(tcpdService.getWeeksBenefitCourse(appUserId,discountType,lon,lat)); + }catch (Exception e){ + return ResultUtil.runErr(); + } + } + } diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java index cb29e84..1b0d7a6 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java +++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java @@ -2,6 +2,10 @@ 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.entity.TCoursePackageType; import com.dsh.course.entity.*; import com.dsh.course.feignclient.account.StudentClient; import com.dsh.course.feignclient.model.*; @@ -308,6 +312,14 @@ return videoVos; } + @PostMapping("/base/coursePack/allPaymentCourseList") + public List<TCoursePackagePayment> getAppuserCourseList(@RequestBody Integer appUserId){ + return packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>() + .eq("appUserId",appUserId) + .eq("payType",3) + .eq("payStatus",2) + .eq("state",1)); + } @ResponseBody diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/CoursePaymentClient.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/CoursePaymentClient.java index 020e7b7..68b1d06 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/feignclient/CoursePaymentClient.java +++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/CoursePaymentClient.java @@ -1,6 +1,7 @@ package com.dsh.course.feignclient; +import com.dsh.course.entity.TCoursePackagePayment; import com.dsh.course.feignclient.model.*; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; @@ -32,4 +33,6 @@ @PostMapping("/base/coursePack/courseOfPurchased") public List<PurchaseVo> getAppUsersCourseData(@RequestBody Integer appUserId); + @PostMapping("/base/coursePack/allPaymentCourseList") + public List<TCoursePackagePayment> getAppuserCourseList(@RequestBody Integer appUserId); } diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/other/StoreClient.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/other/StoreClient.java index eb27313..447b5ae 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/feignclient/other/StoreClient.java +++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/other/StoreClient.java @@ -1,8 +1,10 @@ package com.dsh.course.feignclient.other; +import com.dsh.course.feignclient.other.model.GetDistanceVo; import com.dsh.course.feignclient.other.model.Store; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import java.util.List; @@ -30,4 +32,7 @@ */ @PostMapping("/store/queryStoreById") Store queryStoreById(Integer id); + + @PostMapping("/base/protocol/storeDetail/distanceCal") + public long calculateDistance(@RequestBody GetDistanceVo distanceVo); } diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/other/model/GetDistanceVo.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/other/model/GetDistanceVo.java new file mode 100644 index 0000000..26de9c2 --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/other/model/GetDistanceVo.java @@ -0,0 +1,19 @@ +package com.dsh.course.feignclient.other.model; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class GetDistanceVo { + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty(value = "门店id") + private Integer storeId; + +} diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/dto/DiscountJsonDto.java b/cloud-server-course/src/main/java/com/dsh/course/model/dto/DiscountJsonDto.java index 3eba0a3..35f34af 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/model/dto/DiscountJsonDto.java +++ b/cloud-server-course/src/main/java/com/dsh/course/model/dto/DiscountJsonDto.java @@ -10,6 +10,12 @@ @Data public class DiscountJsonDto { + + /** + * type为1,为会员折扣现金支付金额;type为3,为限时折扣现金支付金额 + */ + @ApiModelProperty(value = "课时数") + private Integer courseHours; /** * type为1,为会员折扣现金支付金额;type为3,为限时折扣现金支付金额 */ diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/vo/response/WeekLimitedResponse.java b/cloud-server-course/src/main/java/com/dsh/course/model/vo/response/WeekLimitedResponse.java new file mode 100644 index 0000000..0e55ce8 --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/model/vo/response/WeekLimitedResponse.java @@ -0,0 +1,54 @@ +package com.dsh.course.model.vo.response; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +public class WeekLimitedResponse { + + @ApiModelProperty(value = "折扣类型 1限时折扣 2赠送课时") + private Integer discountType; + + @ApiModelProperty(value = "数据列表") + private List<Details> list; + + @Data + public static class Details{ + + @ApiModelProperty(value = "封面图") + private String image; + + @ApiModelProperty(value = "课包名称") + private String coursePackageName; + + @ApiModelProperty(value = "课包课时数") + private Integer courseHours; + + @ApiModelProperty(value = "赠送课时数(赠送课时取改字段)") + private Integer donateHours; + + @ApiModelProperty(value = "今日/明日/周x") + private String dataTime; + + @ApiModelProperty(value = "日期") + private Date date; + + @ApiModelProperty(value = "原价") + private Integer originalPrice; + + @ApiModelProperty(value = "折后价") + private Integer discountPrice; + + @ApiModelProperty(value = "状态") + private Integer status; + + @ApiModelProperty(value = "门店距离") + private long storeDistance; + + } + +} diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackageDiscountService.java b/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackageDiscountService.java index bb3d830..852deda 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackageDiscountService.java +++ b/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackageDiscountService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.dsh.course.entity.TCoursePackageDiscount; +import com.dsh.course.model.vo.response.WeekLimitedResponse; /** @@ -14,4 +15,6 @@ */ public interface TCoursePackageDiscountService extends IService<TCoursePackageDiscount> { + WeekLimitedResponse getWeeksBenefitCourse(Integer appUserId,Integer discountType,String lon,String lat); + } diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java index 112efa9..3d92269 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java +++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java @@ -1,10 +1,25 @@ package com.dsh.course.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsh.course.entity.TCoursePackage; import com.dsh.course.entity.TCoursePackageDiscount; +import com.dsh.course.feignclient.other.StoreClient; +import com.dsh.course.feignclient.other.model.GetDistanceVo; import com.dsh.course.mapper.TCoursePackageDiscountMapper; +import com.dsh.course.mapper.TCoursePackageMapper; +import com.dsh.course.model.vo.response.WeekLimitedResponse; import com.dsh.course.service.TCoursePackageDiscountService; +import com.dsh.course.util.DateTimeHelper; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; /** * <p> @@ -17,4 +32,78 @@ @Service public class TCoursePackageDiscountServiceImpl extends ServiceImpl<TCoursePackageDiscountMapper, TCoursePackageDiscount> implements TCoursePackageDiscountService { + + @Resource + private TCoursePackageMapper tcpMapper; + + + @Resource + private StoreClient sreClient; + + + @Override + public WeekLimitedResponse getWeeksBenefitCourse(Integer appUserId,Integer discountType,String lon,String lat) { + Date start = DateTimeHelper.getTodayTime(); + Date lastTime = DateTimeHelper.getWeekOfLastDay(); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + WeekLimitedResponse response= new WeekLimitedResponse(); + List<WeekLimitedResponse.Details> list = new ArrayList<>(); + QueryWrapper<TCoursePackageDiscount> tCoursePackageDiscountQueryWrapper = new QueryWrapper<>(); + tCoursePackageDiscountQueryWrapper.eq("auditStatus",2 ); + List<TCoursePackageDiscount> tCoursePackageDiscounts = new ArrayList<>(); + if (null == discountType || discountType == 1){ + tCoursePackageDiscountQueryWrapper.eq("type",3); + response.setDiscountType(1); + tCoursePackageDiscounts = this.baseMapper.selectList(tCoursePackageDiscountQueryWrapper); + if (tCoursePackageDiscounts.size() > 0){ + for (TCoursePackageDiscount tCoursePackageDiscount : tCoursePackageDiscounts) { + WeekLimitedResponse.Details ls = new WeekLimitedResponse.Details(); + + try { + ObjectMapper objectMapper = new ObjectMapper(); + JsonNode rootNode = null; + rootNode = objectMapper.readTree(tCoursePackageDiscount.getContent()); + String courseHours = rootNode.get("courseHours").asText(); + String lifespanEnd = rootNode.get("lifespanEnd").asText(); + Date endTime = simpleDateFormat.parse(lifespanEnd); + if (endTime.compareTo(lastTime) < 0){ + continue; + } + TCoursePackage coursePackage = tcpMapper.selectById(tCoursePackageDiscount.getCoursePackageId()); + GetDistanceVo distanceVo = new GetDistanceVo(); + distanceVo.setLatitude(lat); + distanceVo.setLongitude(lon); + distanceVo.setStoreId(coursePackage.getStoreId()); + ls.setStoreDistance(sreClient.calculateDistance(distanceVo)); + // TODO: 2023/7/10 限时折扣查询 + list.add(ls); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + }else { + tCoursePackageDiscountQueryWrapper.eq("type",4); + response.setDiscountType(2); + tCoursePackageDiscounts = this.baseMapper.selectList(tCoursePackageDiscountQueryWrapper); + if (tCoursePackageDiscounts.size() > 0){ + for (TCoursePackageDiscount tCoursePackageDiscount : tCoursePackageDiscounts) { + try { + ObjectMapper objectMapper = new ObjectMapper(); + JsonNode rootNode = null; + rootNode = objectMapper.readTree(tCoursePackageDiscount.getContent()); + String courseHours = rootNode.get("courseHours").asText(); + String lifespanStart = rootNode.get("lifespanStart").asText(); + String lifespanEnd = rootNode.get("lifespanEnd").asText(); + String classHours = rootNode.get("classHours").asText(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + } + + + return response; + } } diff --git a/cloud-server-course/src/main/java/com/dsh/course/util/DateTimeHelper.java b/cloud-server-course/src/main/java/com/dsh/course/util/DateTimeHelper.java index ea6f35b..97688c4 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/util/DateTimeHelper.java +++ b/cloud-server-course/src/main/java/com/dsh/course/util/DateTimeHelper.java @@ -2,9 +2,8 @@ import java.text.ParseException; import java.text.SimpleDateFormat; -import java.time.Instant; -import java.time.LocalDateTime; -import java.time.ZoneId; +import java.time.*; +import java.time.temporal.TemporalAdjusters; import java.util.*; @@ -1757,13 +1756,20 @@ return list; } - /*public static void main(String[] args) throws ParseException { - List<Date> allTheDateOftheMonth = getAllTheDateOftheMonth(new Date()); - Date date = allTheDateOftheMonth.get(11); - System.out.println(date.toLocaleString()); - int i = daysBetween(new Date(), date); - System.out.println(i); - }*/ + public static Date getTodayTime(){ + // 获取当天的开始时间(0点) + LocalDate today = LocalDate.now(); + LocalDateTime startOfDay = LocalDateTime.of(today, LocalTime.MIN); + return Date.from(startOfDay.atZone(ZoneId.systemDefault()).toInstant()); + } + + public static Date getWeekOfLastDay(){ + // 获取本周的最后一天的时间(23点59分59秒) + LocalDate today = LocalDate.now(); + LocalDate lastDayOfWeek = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY)); + LocalDateTime endOfDay = LocalDateTime.of(lastDayOfWeek, LocalTime.MAX); + return Date.from(endOfDay.atZone(ZoneId.systemDefault()).toInstant()); + } } diff --git a/cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java b/cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java index 344a813..375e825 100644 --- a/cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java +++ b/cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java @@ -3,16 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.dsh.other.entity.Store; -import com.dsh.other.feignclient.model.GetAllNearbyStoreList; -import com.dsh.other.feignclient.model.StoreDetailOfCourse; -import com.dsh.other.feignclient.model.StoreInfo; -import com.dsh.other.feignclient.model.StoreLonLatList; +import com.dsh.other.feignclient.model.*; import com.dsh.other.model.BaseVo; import com.dsh.other.model.QueryStoreList; import com.dsh.other.service.StoreService; import com.dsh.other.util.GDMapGeocodingUtil; import com.dsh.other.util.ResultUtil; -import com.dsh.other.util.ToolUtil; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; @@ -85,6 +81,20 @@ return storeInfos; } + /** + * 根据门店坐标与传入坐标,计算距离 + * @param distanceVo + * @return + */ + @PostMapping("/base/protocol/storeDetail/distanceCal") + public long calculateDistance(@RequestBody GetDistanceVo distanceVo){ + String current = distanceVo.getLongitude()+","+distanceVo.getLatitude(); + Store store = storeService.getById(distanceVo.getStoreId()); + String result = store.getLon()+","+store.getLat(); + String distanceTOKilometer = gdMapGeocodingUtil.getDistanceTOKilometer(current, result); + return Long.parseLong(distanceTOKilometer); + } + @PostMapping("/base/protocol/storeDetail/storeOfLonLat") public List<StoreLonLatList> getAllStoreLonLats(@RequestBody GetAllNearbyStoreList list ){ diff --git a/cloud-server-other/src/main/java/com/dsh/other/controller/StoredValueConfigController.java b/cloud-server-other/src/main/java/com/dsh/other/controller/StoredValueConfigController.java new file mode 100644 index 0000000..0f77c5a --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/controller/StoredValueConfigController.java @@ -0,0 +1,79 @@ +package com.dsh.other.controller; + + +import com.dsh.other.entity.StoredValueConfig; +import com.dsh.other.service.StoredValueConfigService; +import com.dsh.other.util.ResultUtil; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + +/** + * 储值规则配置控制器 + */ + +@RestController +@RequestMapping("") +public class StoredValueConfigController { + + + @Autowired + private StoredValueConfigService svconfigService; + + @ResponseBody + + @PostMapping("/base/stored/getRechargeArrange") + public List<Map<String,Object>> getRechargeConfig(){ + List<Map<String,Object>> responses = new ArrayList<>(); + StoredValueConfig storedValueConfig = svconfigService.list().get(0); + try { + ObjectMapper objectMapper = new ObjectMapper(); + JsonNode rulesNode = objectMapper.readTree(storedValueConfig.getContent()).path("rules"); + if (rulesNode.isArray()) { + for (JsonNode ruleNode : rulesNode) { + Map<String,Object> de = new HashMap<>(); + String money = ruleNode.get("money").asText(); + String usersCoins = ruleNode.get("usersCoins").asText(); + String MemberCoins = ruleNode.get("MemberCoins").asText(); + de.put("money",money); + de.put("usersCoins",usersCoins); + de.put("MemberCoins",MemberCoins); + responses.add(de); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + return responses; + } + + + @ResponseBody + @PostMapping("/base/stored/rechargeDescription") + @ApiOperation(value = "充值中心-储值说明", tags = {"APP-使用福利"}) + @ApiImplicitParams({ + }) + public ResultUtil<String> rechargeCenterConfig(){ + try { + StoredValueConfig storedValueConfig = svconfigService.list().get(0); + return ResultUtil.success(storedValueConfig.getDescription()); + }catch (Exception e){ + return ResultUtil.runErr(); + } + } + + + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/entity/StoredValueConfig.java b/cloud-server-other/src/main/java/com/dsh/other/entity/StoredValueConfig.java new file mode 100644 index 0000000..4077640 --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/entity/StoredValueConfig.java @@ -0,0 +1,93 @@ +package com.dsh.other.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-10 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("t_stored_value_config") +public class StoredValueConfig extends Model<StoredValueConfig> { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + /** + * 规则配置JSON +{ + "rules": [{ + "money": "100.0", + "usersCoins": "100.0", + "MemberCoins": "100.0", + "startTime": "", + "endTime": "" + }, { + "money": "200.0", + "usersCoins": "200.0", + "MemberCoins": "200.0", + "startTime": "", + "endTime": "" + }], + "time_rules": [{ + "sameTime": [{ + "money": "100.0", + "usersCoins": "100.0", + "MemberCoins": "200.0", + "startTime": "2023-06-01", + "endTime": "2023-06-15" + }, { + "money": "200.0", + "usersCoins": "200.0", + "MemberCoins": "400.0", + "startTime": "2023-06-01", + "endTime": "2023-06-15" + }] + }, { + "sameTime": [{ + "money": "100.0", + "usersCoins": "100.0", + "MemberCoins": "300.0", + "startTime": "2023-07-01", + "endTime": "2023-07-15" + }, { + "money": "200.0", + "usersCoins": "200.0", + "MemberCoins": "600.0", + "startTime": "2023-07-01", + "endTime": "2023-07-15" + }] + }] +} + */ + private String content; + /** + * 储值说明 + */ + private String description; + + + @Override + protected Serializable pkVal() { + return this.id; + } + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/feignclient/RechargeConfigClient.java b/cloud-server-other/src/main/java/com/dsh/other/feignclient/RechargeConfigClient.java new file mode 100644 index 0000000..6e3383c --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/feignclient/RechargeConfigClient.java @@ -0,0 +1,18 @@ +package com.dsh.other.feignclient; + + +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; + +import java.util.List; +import java.util.Map; + + + +@FeignClient(value = "mb-cloud-other") +public interface RechargeConfigClient { + + @PostMapping("/base/stored/getRechargeArrange") + List<Map<String,Object>> getRechargeConfig(); + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/feignclient/StoreClient.java b/cloud-server-other/src/main/java/com/dsh/other/feignclient/StoreClient.java index 035d317..0dc55b4 100644 --- a/cloud-server-other/src/main/java/com/dsh/other/feignclient/StoreClient.java +++ b/cloud-server-other/src/main/java/com/dsh/other/feignclient/StoreClient.java @@ -1,9 +1,6 @@ package com.dsh.other.feignclient; -import com.dsh.other.feignclient.model.GetAllNearbyStoreList; -import com.dsh.other.feignclient.model.StoreDetailOfCourse; -import com.dsh.other.feignclient.model.StoreInfo; -import com.dsh.other.feignclient.model.StoreLonLatList; +import com.dsh.other.feignclient.model.*; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -25,4 +22,8 @@ @PostMapping("/base/protocol/storeDetail/storeOfLonLat") List<StoreLonLatList> getAllStoreLonLats(@RequestBody GetAllNearbyStoreList list); + + + @PostMapping("/base/protocol/storeDetail/distanceCal") + public long calculateDistance(@RequestBody GetDistanceVo distanceVo); } diff --git a/cloud-server-other/src/main/java/com/dsh/other/feignclient/model/GetDistanceVo.java b/cloud-server-other/src/main/java/com/dsh/other/feignclient/model/GetDistanceVo.java new file mode 100644 index 0000000..057f265 --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/feignclient/model/GetDistanceVo.java @@ -0,0 +1,19 @@ +package com.dsh.other.feignclient.model; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class GetDistanceVo { + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty(value = "门店id") + private Integer storeId; + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/mapper/StoredValueConfigMapper.java b/cloud-server-other/src/main/java/com/dsh/other/mapper/StoredValueConfigMapper.java new file mode 100644 index 0000000..d33ab68 --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/mapper/StoredValueConfigMapper.java @@ -0,0 +1,16 @@ +package com.dsh.other.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsh.other.entity.StoredValueConfig; + +/** + * <p> + * 储值规则配置 Mapper 接口 + * </p> + * + * @author jqs + * @since 2023-07-10 + */ +public interface StoredValueConfigMapper extends BaseMapper<StoredValueConfig> { + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/StoredValueConfigService.java b/cloud-server-other/src/main/java/com/dsh/other/service/StoredValueConfigService.java new file mode 100644 index 0000000..d8a1c8d --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/service/StoredValueConfigService.java @@ -0,0 +1,16 @@ +package com.dsh.other.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.dsh.other.entity.StoredValueConfig; + +/** + * <p> + * 储值规则配置 服务类 + * </p> + * + * @author jqs + * @since 2023-07-10 + */ +public interface StoredValueConfigService extends IService<StoredValueConfig> { + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/impl/StoredValueConfigServiceImpl.java b/cloud-server-other/src/main/java/com/dsh/other/service/impl/StoredValueConfigServiceImpl.java new file mode 100644 index 0000000..8579e45 --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/service/impl/StoredValueConfigServiceImpl.java @@ -0,0 +1,20 @@ +package com.dsh.other.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsh.other.entity.StoredValueConfig; +import com.dsh.other.mapper.StoredValueConfigMapper; +import com.dsh.other.service.StoredValueConfigService; +import org.springframework.stereotype.Service; + +/** + * <p> + * 储值规则配置 服务实现类 + * </p> + * + * @author jqs + * @since 2023-07-10 + */ +@Service +public class StoredValueConfigServiceImpl extends ServiceImpl<StoredValueConfigMapper, StoredValueConfig> implements StoredValueConfigService { + +} diff --git a/cloud-server-other/src/main/resources/mapper/StoredValueConfigMapper.xml b/cloud-server-other/src/main/resources/mapper/StoredValueConfigMapper.xml new file mode 100644 index 0000000..d71478b --- /dev/null +++ b/cloud-server-other/src/main/resources/mapper/StoredValueConfigMapper.xml @@ -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.other.mapper.StoredValueConfigMapper"> + + +</mapper> -- Gitblit v1.7.1