cloud-server-account/src/main/java/com/dsh/account/controller/PaymentCallbackController.java
@@ -2,12 +2,14 @@ import com.dsh.account.service.RechargeRecordsService; import com.dsh.account.service.TAppUserService; import com.dsh.account.service.TStudentService; import com.dsh.account.util.PayMoneyUtil; import com.dsh.account.util.ResultUtil; 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 javax.servlet.http.HttpServletRequest; @@ -32,6 +34,9 @@ private TStudentService tstuService; @Autowired private RechargeRecordsService recordsService; @Autowired private TAppUserService tappService; /** * 课包续课支付宝支付回调接口 @@ -129,4 +134,59 @@ } } /** * 兑换商品支付的微信回调 * @param request * @param response */ @ResponseBody @PostMapping("/base/appUser/addVipPaymentWeChatCallback") public void addVipPaymentWeChatCallback(HttpServletRequest request, HttpServletResponse response){ try { Map<String, String> map = payMoneyUtil.weixinpayCallback(request); if(null != map){ String out_trade_no = map.get("out_trade_no"); String transaction_id = map.get("transaction_id"); String result = map.get("result"); ResultUtil resultUtil = tappService.exchangeAddPaymentCallback(out_trade_no, transaction_id,1); if(resultUtil.getCode() == 200){ PrintWriter out = response.getWriter(); out.write(result); out.flush(); out.close(); } } }catch (Exception e){ e.printStackTrace(); } } /** * 兑换商品支付的支付宝回调 * @param request * @param response */ @ResponseBody @PostMapping("/base/appUser/addVipPaymentAliCallback") public void addVipPaymentAliCallback(HttpServletRequest request, HttpServletResponse response){ try { Map<String, String> map = payMoneyUtil.alipayCallback(request); if(null != map){ String out_trade_no = map.get("out_trade_no"); String trade_no = map.get("trade_no"); ResultUtil resultUtil = tappService.exchangeAddPaymentCallback(out_trade_no, trade_no,2); if(resultUtil.getCode() == 200){ PrintWriter out = response.getWriter(); out.write("success"); out.flush(); out.close(); } } }catch (Exception e){ e.printStackTrace(); } } } cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java
@@ -296,6 +296,82 @@ } /** * 实体、门票、优惠券为默认门店|课包为默认学员 */ @ResponseBody @PostMapping("/api/useBenefit/goodsOfCourseStore") @ApiOperation(value = "积分商城-实体、门票、优惠券为默认门店|课包为默认学员", tags = {"APP-使用福利"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(value = "纬度", name = "lat", required = false, dataType = "String"), @ApiImplicitParam(value = "经度", name = "lon", required = false, dataType = "String"), @ApiImplicitParam(value = "是否为课包商品(1=是 2=否)", name = "isCourse", required = true, dataType = "int"), @ApiImplicitParam(value = "商品id", name = "pointsMerId", required = true, dataType = "int"), }) public ResultUtil<StuAndStoreResponse> goodsOfCourseStore(String lat, String lon,Integer isCourse,Integer pointsMerId){ try { Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(); if(null == userIdFormRedis){ return ResultUtil.tokenErr(); } return ResultUtil.success(tauService.queryAppUserDefaultStuAndStore(userIdFormRedis,pointsMerId,lat,lon,isCourse)); }catch (Exception e){ return ResultUtil.runErr(); } } /** * 兑换详情(实体、门票、优惠券)中的门店列表 */ @ResponseBody @PostMapping("/api/useBenefit/exchangeStoreIds") @ApiOperation(value = "积分商城-兑换详情(实体、门票、优惠券)中的门店列表", tags = {"APP-使用福利"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(value = "商品类型 1实物 2课包 3门票 4优惠券", name = "lat", required = true, dataType = "String"), @ApiImplicitParam(value = "商品id", name = "pointsMerId", required = true, dataType = "int"), }) public ResultUtil<List<StoreResponse>> getExchangeStoreIds( Integer goodsType,Integer pointsMerId){ try { return ResultUtil.success(tauService.queryStoresOfExchange(goodsType,pointsMerId)); }catch (Exception e){ return ResultUtil.runErr(); } } /** * 商品兑换 */ @ResponseBody @PostMapping("/api/useBenefit/productRedemptionOperation") @ApiOperation(value = "积分商城-商品兑换", tags = {"APP-使用福利"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(value = "商品id", name = "goodId", required = true, dataType = "int"), @ApiImplicitParam(value = "商品类型 1实物 2课包 3门票 4优惠券", name = "goodsType", required = true, dataType = "int"), @ApiImplicitParam(value = "兑换数量", name = "nums", required = false, dataType = "int"), @ApiImplicitParam(value = "兑换方式(1=积分,2=积分+现金)", name = "exchangeType", required = true, dataType = "int"), @ApiImplicitParam(value = "现金支付方式(1=微信 2=支付宝)", name = "payType", required = false, dataType = "int"), @ApiImplicitParam(value = "学员id列表", name = "stuIds", required = false), }) public ResultUtil productRedemptionOperation(Integer goodId, Integer goodsType,Integer nums,Integer exchangeType,Integer payType,List<Integer> stuIds){ try { Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(); if(null == userIdFormRedis){ return ResultUtil.tokenErr(); } return tauService.productRedemptionOperation(userIdFormRedis,goodId,goodsType,nums,exchangeType,payType); }catch (Exception e){ return ResultUtil.runErr(); } } /** * 积分明细 */ cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/MerChandiseClient.java
@@ -1,10 +1,7 @@ package com.dsh.account.feignclient.activity; import com.dsh.account.feignclient.activity.model.CommodityRequest; import com.dsh.account.feignclient.activity.model.IntegralCommodity; import com.dsh.account.feignclient.activity.model.PointsMerchandise; import com.dsh.account.feignclient.activity.model.ProductDetailRequest; import com.dsh.account.feignclient.activity.model.*; import com.dsh.account.model.vo.userBenefitDetail.ExchangeDetailsResponse; import com.dsh.account.model.vo.userBenefitDetail.PointDetailsVo; import com.dsh.account.model.vo.userBenefitDetail.ProductDetailsVo; @@ -36,4 +33,19 @@ @PostMapping("/base/pointMerchars/getSpecificsOfGoods") public PointDetailsVo getSpecificsOfGoods(@RequestBody Integer speMercharsId); @PostMapping("/base/pointMerchars/selectPointsMerchandiseById") public PointsMerchandise selectPointsMerchandiseById(@RequestBody Integer speMercharsId); @PostMapping("/base/pointMerchars/saveDetailsUserPointMercase") public void saveDetailsUserPointMercase(@RequestBody UserPointsMerchandise merchandise); @PostMapping("/base/pointMerchars/updateDetailsUserPointMercase") public void updateDetailsUserPointMercase(@RequestBody UserPointsMerchandise merchandise); @PostMapping("/base/pointMerchars/queryUserPointMerchaseByCode") public List<UserPointsMerchandise> queryUserPointMerchaseByCode(@RequestBody String code); } cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/MerChandiseStoreClient.java
New file @@ -0,0 +1,17 @@ package com.dsh.account.feignclient.activity; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import java.util.List; @FeignClient(value = "mb-cloud-activity") public interface MerChandiseStoreClient { @PostMapping("/base/pointMerchars/queryStoreIdsOfMerchandise") List<Integer> queryPointMerStoreIds(@RequestBody Integer pointMerId); } cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/UserConponClient.java
@@ -1,6 +1,7 @@ package com.dsh.account.feignclient.activity; import com.dsh.account.feignclient.activity.model.CommodityRequest; import com.dsh.account.feignclient.activity.model.UserCoupon; import com.dsh.account.model.dto.Coupon; import com.dsh.account.model.vo.sourceDetail.CouponStuAvailableVo; import org.springframework.cloud.openfeign.FeignClient; @@ -25,4 +26,9 @@ @PostMapping("/base/coupon/getRedeemedNums") public int getRedeemedQuantity(@RequestBody Integer id); @PostMapping("/base/coupon/insertToAppuserCoupon") public void insertToAppuserCoupon(@RequestBody UserCoupon coupon); @PostMapping("/userCoupon/queryCouponOfStore") List<Integer> getCouponStoreIds(@RequestBody Integer couponId); } cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/PointsMerchandise.java
@@ -13,7 +13,7 @@ */ private Integer id; /** * 类型(1=实体商品,2=课包商品,3=门票商品) * 类型(1=实体商品,2=课包商品,3=门票商品,4=优惠券) */ private Integer type; /** cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/UserCoupon.java
New file @@ -0,0 +1,49 @@ package com.dsh.account.feignclient.activity.model; import lombok.Data; import java.util.Date; /** * <p> * 用户优惠券领取记录 * </p> * * @author jqs * @since 2023-06-29 */ @Data public class UserCoupon { private static final long serialVersionUID = 1L; /** * 主键 */ private Long id; /** * 优惠券id */ private Integer couponId; /** * 用户id */ private Integer userId; /** * 状态(1=待核销,2=已核销) */ private Integer status; /** * 核销人员id */ private Integer verificationUserId; /** * 核销时间 */ private Date verificationTime; /** * 领取时间 */ private Date insertTime; } cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/UserPointsMerchandise.java
New file @@ -0,0 +1,93 @@ package com.dsh.account.feignclient.activity.model; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; 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-06-29 */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName("t_user_points_merchandise") public class UserPointsMerchandise extends Model<UserPointsMerchandise> { private static final long serialVersionUID = 1L; /** * 主键 */ @TableId(value = "id", type = IdType.INPUT) private Long id; /** * 优惠券id */ @TableField("pointsMerchandiseId") private Integer pointsMerchandiseId; /** * 用户id */ @TableField("userId") private Integer userId; /** * 核销人员id */ @TableField("verificationUserId") private Integer verificationUserId; /** * 核销门店id */ @TableField("verifiStoreId") private Integer verifiStoreId; /** * 核销时间 */ @TableField("verificationTime") private Date verificationTime; /** * 状态(1=待核销,2=已核销) */ @TableField("status") private Integer status; /** * 领取时间 */ @TableField("insertTime") private Date insertTime; /** * 现金支付方式(1=微信2支付宝) */ @TableField("payType") private Integer payType; /** * code */ @TableField("code") private String code; /** * orderNumber */ @TableField("orderNumber") private String orderNumber; @Override protected Serializable pkVal() { return this.id; } } cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/ProductDetailsVo.java
@@ -19,7 +19,7 @@ @ApiModelProperty(value = "商品名称") private String goodName; @ApiModelProperty(value = "适用人群") @ApiModelProperty(value = "适用人群(1=全部用户,2=年度会员,3=已有学员用户)") private Integer belongsScope; @ApiModelProperty(value = "已兑换数量") @@ -33,6 +33,9 @@ @ApiModelProperty(value = "所需类型(积分/积分+现金)") private String requiredType; @ApiModelProperty(value = "兑换方式(1=积分,2=积分+现金)") private Integer exchangeType; @ApiModelProperty(value = "价值") private BigDecimal cost; @@ -52,6 +55,9 @@ @ApiModelProperty(value = "兑换说明") private String contents; @ApiModelProperty(value = "兑换地点类型 1=全国 2=指定城市 3指定门店") private Integer exchangeAddrType; @ApiModelProperty(value = "商品类型 1实物 2课包 3门票 4优惠券") private Integer goodType; cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/StoreResponse.java
New file @@ -0,0 +1,15 @@ package com.dsh.account.model.vo.userBenefitDetail; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class StoreResponse { @ApiModelProperty(value = "门店id") private Integer storeId; @ApiModelProperty(value = "门店名称") private String storeName; } cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/StuAndStoreResponse.java
New file @@ -0,0 +1,28 @@ package com.dsh.account.model.vo.userBenefitDetail; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class StuAndStoreResponse { @ApiModelProperty(value = "门店id") private Integer storeId; @ApiModelProperty(value = "门店名称") private String storeName; @ApiModelProperty(value = "学员id") private Integer stuId; @ApiModelProperty(value = "学员姓名") private String stuName; @ApiModelProperty(value = "学员联系方式") private String stuPhone; @ApiModelProperty(value = "学员年龄") private Integer stuAge; } cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java
@@ -126,4 +126,11 @@ ProductDetailsVo productDetails(Integer goodId, Integer goodsType ); StuAndStoreResponse queryAppUserDefaultStuAndStore(Integer userIdFormRedis ,Integer pointsMerId, String lat, String lon,Integer isCourse); ResultUtil productRedemptionOperation(Integer userIdFormRedis, Integer goodId, Integer goodsType,Integer nums,Integer exchangeType,Integer payType); ResultUtil exchangeAddPaymentCallback(String code, String orderNumber,Integer payType); List<StoreResponse> queryStoresOfExchange(Integer goodsType,Integer pointsMerId); } cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
@@ -3,16 +3,12 @@ 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.entity.TStudent; import com.dsh.account.entity.VipPayment; import com.dsh.account.entity.*; import com.dsh.account.enums.RechargeRecordEnum; import com.dsh.account.feignclient.activity.MerChandiseClient; import com.dsh.account.feignclient.activity.MerChandiseStoreClient; import com.dsh.account.feignclient.activity.UserConponClient; import com.dsh.account.feignclient.activity.model.CommodityRequest; import com.dsh.account.feignclient.activity.model.PointsMerchandise; import com.dsh.account.feignclient.activity.model.ProductDetailRequest; import com.dsh.account.feignclient.activity.model.*; import com.dsh.account.feignclient.competition.DeductionCompetitionsClient; import com.dsh.account.feignclient.competition.model.PaymentCompetition; import com.dsh.account.feignclient.course.CoursePackageClient; @@ -21,12 +17,8 @@ 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; import com.dsh.account.mapper.RechargeRecordsMapper; import com.dsh.account.mapper.TAppUserMapper; import com.dsh.account.mapper.TStudentMapper; import com.dsh.account.mapper.VipPaymentMapper; import com.dsh.account.feignclient.other.model.*; import com.dsh.account.mapper.*; import com.dsh.account.model.AddAppUserVo; import com.dsh.account.model.JoinPlayPaiVo; import com.dsh.account.model.LoginSMSCodeVo; @@ -50,6 +42,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -113,6 +106,12 @@ @Resource private DeductionCompetitionsClient deducClient; @Resource private UserIntegralChangesMapper uicMapper; @Resource private MerChandiseStoreClient mcsClient; @Override public ClassInfoVo queryUserOfStus(Integer id,String latitude,String longitude) { @@ -748,4 +747,207 @@ return mcClient.getGoodDetailsWithId(detailsVo); } @Override public StuAndStoreResponse queryAppUserDefaultStuAndStore(Integer userIdFormRedis,Integer pointsMerId, String lat, String lon,Integer isCourse) { StuAndStoreResponse response = new StuAndStoreResponse(); if (isCourse == 1){ List<TStudent> tStudents = tsmapper.selectList(new QueryWrapper<TStudent>() .eq("appUserId",userIdFormRedis) .eq("state",1) .eq("isDefault",1)); if (tStudents.size() > 0 ){ response.setStuId(tStudents.get(0).getId()); response.setStuName(tStudents.get(0).getName()); response.setStuPhone(tStudents.get(0).getPhone()); response.setStuAge(DateUtil.age(tStudents.get(0).getBirthday())); } return response; }else { PointsMerchandise pointsMerchandise = mcClient.selectPointsMerchandiseById(pointsMerId); if (pointsMerchandise.getType() == 4){ List<Integer> couponStoreIds = ucponClient.getCouponStoreIds(pointsMerId); StoreDetailOfCourse courseOfStore = storeClient.getCourseOfStore(couponStoreIds.get(0)); if(ToolUtil.isNotEmpty(courseOfStore)){ response.setStoreId(couponStoreIds.get(0)); response.setStoreName(courseOfStore.getStoreName()); } }else { List<Integer> integers = mcsClient.queryPointMerStoreIds(pointsMerId); StoreDetailOfCourse courseOfStore = storeClient.getCourseOfStore(integers.get(0)); if(ToolUtil.isNotEmpty(courseOfStore)){ response.setStoreId(integers.get(0)); response.setStoreName(courseOfStore.getStoreName()); } } return response; } } @Override public ResultUtil productRedemptionOperation(Integer userIdFormRedis, Integer goodId, Integer goodsType,Integer nums,Integer exchangeType,Integer payType) { PointsMerchandise merchandise = mcClient.selectPointsMerchandiseById(goodId); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); for (int i = 0; i < nums; i++) { UserPointsMerchandise pointsMerchandise = new UserPointsMerchandise(); pointsMerchandise.setPointsMerchandiseId(goodId); pointsMerchandise.setUserId(userIdFormRedis); pointsMerchandise.setCode(code); mcClient.saveDetailsUserPointMercase(pointsMerchandise); } // 扣减积分 TAppUser tAppUser = this.baseMapper.selectById(userIdFormRedis); // 积分变更记录 UserIntegralChanges userIntegralChanges = new UserIntegralChanges(); userIntegralChanges.setAppUserId(userIdFormRedis); userIntegralChanges.setOldIntegral(tAppUser.getIntegral()); userIntegralChanges.setType(2); tAppUser.setIntegral(null == tAppUser.getIntegral() ? merchandise.getIntegral() : tAppUser.getIntegral() +merchandise.getIntegral()); userIntegralChanges.setNewIntegral(tAppUser.getIntegral()); userIntegralChanges.setInsertTime(new Date()); uicMapper.insert(userIntegralChanges); this.baseMapper.updateById(tAppUser); // 现金支付 if (exchangeType == 1){ // 积分兑换 switch (goodsType){ case 2: for (int i = 0; i < nums; i++) { TCoursePackagePayment packagePayment = new TCoursePackagePayment(); // packagePayment.setAppUserId(); // TODO: 2023/7/14 paymentClient.savePaymentCoursePackage(packagePayment); } break; case 4: for (int i = 0; i < nums; i++) { UserCoupon coupon = new UserCoupon(); coupon.setCouponId(goodId); coupon.setUserId(userIdFormRedis); coupon.setStatus(1); coupon.setInsertTime(new Date()); ucponClient.insertToAppuserCoupon(coupon); } break; default: break; } }else { switch (payType){ case 1: return WechatPayment(merchandise.getCash(),code); case 2: return AlipayPayment(merchandise.getCash(),code); default: break; } } return null; } private ResultUtil AlipayPayment(BigDecimal cash, String code) { return ResultUtil.success(); } private ResultUtil WechatPayment(BigDecimal cash, String code) { return ResultUtil.success(); } @Override public ResultUtil exchangeAddPaymentCallback(String code, String orderNumber,Integer payType) { List<UserPointsMerchandise> userPointsMerchandises = mcClient.queryUserPointMerchaseByCode(code); if (userPointsMerchandises.size() > 1){ for (int i = 0; i < userPointsMerchandises.size(); i++) { userPointsMerchandises.get(i).setOrderNumber(orderNumber+ "-" + (i+1)); mcClient.updateDetailsUserPointMercase(userPointsMerchandises.get(i)); Integer pointsMerchandiseId = userPointsMerchandises.get(i).getPointsMerchandiseId(); PointsMerchandise pointsMerchandise = mcClient.selectPointsMerchandiseById(pointsMerchandiseId); switch (pointsMerchandise.getType()){ case 2: TCoursePackagePayment packagePayment = new TCoursePackagePayment(); // packagePayment.setAppUserId(); paymentClient.savePaymentCoursePackage(packagePayment); break; case 4: UserCoupon coupon = new UserCoupon(); coupon.setCouponId(userPointsMerchandises.get(0).getPointsMerchandiseId()); coupon.setUserId(userPointsMerchandises.get(0).getUserId()); coupon.setStatus(1); coupon.setInsertTime(new Date()); ucponClient.insertToAppuserCoupon(coupon); break; default: break; } } }else { userPointsMerchandises.get(0).setOrderNumber(orderNumber); mcClient.updateDetailsUserPointMercase(userPointsMerchandises.get(0)); Integer pointsMerchandiseId = userPointsMerchandises.get(0).getPointsMerchandiseId(); PointsMerchandise pointsMerchandise = mcClient.selectPointsMerchandiseById(pointsMerchandiseId); switch (pointsMerchandise.getType()){ case 2: TCoursePackagePayment packagePayment = new TCoursePackagePayment(); // packagePayment.setAppUserId(); paymentClient.savePaymentCoursePackage(packagePayment); break; case 4: UserCoupon coupon = new UserCoupon(); coupon.setCouponId(userPointsMerchandises.get(0).getPointsMerchandiseId()); coupon.setUserId(userPointsMerchandises.get(0).getUserId()); coupon.setStatus(1); coupon.setInsertTime(new Date()); ucponClient.insertToAppuserCoupon(coupon); break; default: break; } } return ResultUtil.success(); } @Override public List<StoreResponse> queryStoresOfExchange(Integer goodsType,Integer pointsMerId) { List<StoreResponse> responses = new ArrayList<>(); if (goodsType == 4){ List<Integer> couponStoreIds = ucponClient.getCouponStoreIds(pointsMerId); for (Integer couponStoreId : couponStoreIds) { StoreDetailOfCourse courseOfStore = storeClient.getCourseOfStore(couponStoreId); if(ToolUtil.isNotEmpty(courseOfStore)){ StoreResponse response = new StoreResponse(); response.setStoreId(couponStoreId); response.setStoreName(courseOfStore.getStoreName()); responses.add(response); } } }else { List<Integer> integers = mcsClient.queryPointMerStoreIds(pointsMerId); for (Integer integer : integers) { StoreDetailOfCourse courseOfStore = storeClient.getCourseOfStore(integer); if(ToolUtil.isNotEmpty(courseOfStore)){ StoreResponse response = new StoreResponse(); response.setStoreId(integer); response.setStoreName(courseOfStore.getStoreName()); responses.add(response); } } } return responses; } } cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java
@@ -155,4 +155,14 @@ .eq("couponId",id)); } @PostMapping("/base/coupon/insertToAppuserCoupon") public void insertToAppuserCoupon(@RequestBody UserCoupon coupon){ ucService.save(coupon); } } cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java
@@ -14,6 +14,7 @@ import com.dsh.activity.service.*; import com.dsh.activity.util.GDMapGeocodingUtil; import com.dsh.activity.util.StrUtils; import com.dsh.activity.util.TokenUtil; import com.dsh.activity.util.ToolUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; @@ -23,6 +24,7 @@ import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @RestController @RequestMapping("") @@ -58,6 +60,9 @@ @Autowired private CouponStoreService cstoreService; @Autowired private TokenUtil tokenUtil; @PostMapping("/base/pointMerchars/convertGoods") @@ -121,7 +126,7 @@ switch (detailRequest.getGoodsType()){ case 2: // 课包 CoursePackage coursePackage = cpClient.queryCoursePackageById(detailRequest.getGoodId()); CoursePackage coursePackage = cpClient.queryCoursePackageById(merchandise.getCoursePackageId()); detailsVo.setGoodId(coursePackage.getId()); List<String> list1 = Arrays.asList(StrUtils.splitStr2StrArr(coursePackage.getDetailDrawing(), ",")); @@ -144,16 +149,21 @@ detailsVo.setResidueNum(merchandise.getQuantityIssued() - coursePackageNums); detailsVo.setPerLimit(merchandise.getPickUpQuantity()); if (merchandise.getRedemptionMethod() == 1){ detailsVo.setExchangeType(1); detailsVo.setRequiredType(merchandise.getIntegral() + "积分"); }else { detailsVo.setExchangeType(2); detailsVo.setRequiredType(merchandise.getIntegral() + "积分+¥"+merchandise.getCash()); } detailsVo.setCost(merchandise.getPrice()); if (merchandise.getUseScope() == 1){ detailsVo.setExchangeAddrType(1); detailsVo.setBelongs("全国通用"); }else if (merchandise.getUseScope() == 2){ detailsVo.setExchangeAddrType(2); detailsVo.setBelongs(merchandise.getProvince()+"|"+merchandise.getCity() + "用户可用"); }else { detailsVo.setExchangeAddrType(3); List<PointsMerchandiseStore> list = pmdstoService.list(new QueryWrapper<PointsMerchandiseStore>() .eq("pointsMerchandiseId",merchandise.getId() )); PointsMerchandiseStore pointsMerchandiseStore = list.get(0); @@ -394,4 +404,40 @@ return detailsVo; } @PostMapping("/base/pointMerchars/selectPointsMerchandiseById") public PointsMerchandise selectPointsMerchandiseById(@RequestBody Integer speMercharsId){ return pmdsService.getById(speMercharsId); } @PostMapping("/base/pointMerchars/saveDetailsUserPointMercase") public void saveDetailsUserPointMercase(@RequestBody UserPointsMerchandise merchandise){ upmseService.save(merchandise); } @PostMapping("/base/pointMerchars/updateDetailsUserPointMercase") public void updateDetailsUserPointMercase(@RequestBody UserPointsMerchandise merchandise){ upmseService.updateById(merchandise); } @PostMapping("/base/pointMerchars/queryUserPointMerchaseByCode") public List<UserPointsMerchandise> queryUserPointMerchaseByCode(@RequestBody String code){ return upmseService.list(new QueryWrapper<UserPointsMerchandise>() .eq("code",code)); } @PostMapping("/base/pointMerchars/queryStoreIdsOfMerchandise") public List<Integer> queryPointMerStoreIds(@RequestBody Integer pointMerId){ List<Integer> storeIds = new ArrayList<>(); List<PointsMerchandiseStore> list = pmdstoService.list(new QueryWrapper<PointsMerchandiseStore>() .eq("pointsMerchandiseId",pointMerId)); if (list.size() > 0){ storeIds = list.stream().map(PointsMerchandiseStore::getStoreId).collect(Collectors.toList()); } return storeIds; } } cloud-server-activity/src/main/java/com/dsh/activity/controller/UserCouponController.java
@@ -2,9 +2,11 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.dsh.activity.entity.Coupon; import com.dsh.activity.entity.CouponStore; import com.dsh.activity.entity.UserCoupon; import com.dsh.activity.feignclient.model.CouponStuAvailableVo; import com.dsh.activity.model.CouponListVo; import com.dsh.activity.service.CouponStoreService; import com.dsh.activity.service.ICouponService; import com.dsh.activity.service.UserCouponService; import com.dsh.activity.util.ResultUtil; @@ -29,9 +31,6 @@ public class UserCouponController { @Autowired private UserCouponService uconService; @Autowired private ICouponService cService; @Autowired @@ -39,6 +38,10 @@ @Autowired private UserCouponService userCouponService; @Autowired private CouponStoreService csServie; @@ -50,7 +53,7 @@ List<CouponStuAvailableVo> availableVos = new ArrayList<>(); List<UserCoupon> list = uconService.list(new QueryWrapper<UserCoupon>() List<UserCoupon> list = userCouponService.list(new QueryWrapper<UserCoupon>() .eq("userId", appUserId) .eq("status",1)); if (list.size() > 0){ @@ -127,4 +130,23 @@ return null; } } @PostMapping("/userCoupon/queryCouponOfStore") public List<Integer> getCouponStoreIds(@RequestBody Integer couponId){ try { List<Integer> storeIds = new ArrayList<>(); List<CouponStore> list = csServie.list(new QueryWrapper<CouponStore>() .eq("couponId",couponId)); if (list.size() > 0 ){ storeIds = list.stream().map(CouponStore::getStoreId).collect(Collectors.toList()); } return storeIds; }catch (Exception e){ e.printStackTrace(); return null; } } } cloud-server-activity/src/main/java/com/dsh/activity/entity/UserPointsMerchandise.java
@@ -68,6 +68,21 @@ */ @TableField("insertTime") private Date insertTime; /** * 现金支付方式(1=微信2支付宝) */ @TableField("payType") private Integer payType; /** * code */ @TableField("code") private String code; /** * orderNumber */ @TableField("orderNumber") private String orderNumber; @Override cloud-server-activity/src/main/java/com/dsh/activity/feignclient/MerChandiseClient.java
@@ -2,6 +2,7 @@ import com.dsh.activity.entity.PointsMerchandise; import com.dsh.activity.entity.UserPointsMerchandise; import com.dsh.activity.feignclient.model.*; import com.dsh.activity.model.request.CommodityRequest; import org.springframework.cloud.openfeign.FeignClient; @@ -34,4 +35,17 @@ public PointDetailsVo getSpecificsOfGoods(@RequestBody Integer speMercharsId); @PostMapping("/base/pointMerchars/selectPointsMerchandiseById") public PointsMerchandise selectPointsMerchandiseById(@RequestBody Integer speMercharsId); @PostMapping("/base/pointMerchars/saveDetailsUserPointMercase") public void saveDetailsUserPointMercase(@RequestBody UserPointsMerchandise merchandise); @PostMapping("/base/pointMerchars/updateDetailsUserPointMercase") public void updateDetailsUserPointMercase(@RequestBody UserPointsMerchandise merchandise); @PostMapping("/base/pointMerchars/queryUserPointMerchaseByCode") public List<UserPointsMerchandise> queryUserPointMerchaseByCode(@RequestBody String code); } cloud-server-activity/src/main/java/com/dsh/activity/feignclient/MerChandiseStoreClient.java
New file @@ -0,0 +1,17 @@ package com.dsh.activity.feignclient; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import java.util.List; @FeignClient(value = "mb-cloud-activity") public interface MerChandiseStoreClient { @PostMapping("/base/pointMerchars/queryStoreIdsOfMerchandise") List<Integer> queryPointMerStoreIds(@RequestBody Integer pointMerId); } cloud-server-activity/src/main/java/com/dsh/activity/feignclient/UserConponClient.java
@@ -1,6 +1,7 @@ package com.dsh.activity.feignclient; import com.dsh.activity.entity.Coupon; import com.dsh.activity.entity.UserCoupon; import com.dsh.activity.feignclient.model.CouponStuAvailableVo; import com.dsh.activity.model.request.CommodityRequest; import org.springframework.cloud.openfeign.FeignClient; @@ -24,4 +25,11 @@ @PostMapping("/base/coupon/getRedeemedNums") public int getRedeemedQuantity(@RequestBody Integer id); @PostMapping("/base/coupon/insertToAppuserCoupon") public void insertToAppuserCoupon(@RequestBody UserCoupon coupon); @PostMapping("/userCoupon/queryCouponOfStore") List<Integer> getCouponStoreIds(@RequestBody Integer couponId); } cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/ProductDetailsVo.java
@@ -34,6 +34,10 @@ @ApiModelProperty(value = "所需类型(积分/积分+现金)") private String requiredType; @ApiModelProperty(value = "兑换方式(1=积分,2=积分+现金)") private Integer exchangeType; @ApiModelProperty(value = "价值") private BigDecimal cost; @@ -52,6 +56,9 @@ @ApiModelProperty(value = "兑换说明") private String contents; @ApiModelProperty(value = "兑换地点类型 1=全国 2=指定城市 3指定门店") private Integer exchangeAddrType; @ApiModelProperty(value = "商品类型 1实物 2课包 3门票 4优惠券") private Integer goodType; cloud-server-activity/src/main/java/com/dsh/activity/util/UUIDUtil.java
New file @@ -0,0 +1,101 @@ package com.dsh.activity.util; import java.text.SimpleDateFormat; import java.util.Date; import java.util.UUID; /** * 定义生成随机码的工具类 */ public class UUIDUtil { private int i = 1; /** * 定义生成原生的UUID随机码 * @return */ public static String getNativeUUID(){ return UUID.randomUUID().toString(); } /** * 生成32位随机码 * @return */ public static String getRandomCode(){ return UUIDUtil.getNativeUUID().replaceAll("-", ""); } /** * 获取给定长度的随机码 * @param num * @return * @throws Exception */ public static String getRandomCode(Integer num) throws Exception{ String str = null; if(0 < num){ if(num % 32 > 0){ Integer s = num / 32; Integer l = num % 32; StringBuffer sb = new StringBuffer(); for(int i = 0; i < s; i++){ sb.append(UUIDUtil.getRandomCode()); } sb.append(UUIDUtil.getRandomCode().substring(0, l)); str = sb.toString(); }else if(num % 32 == 0){ Integer s = num / 32; StringBuffer sb = new StringBuffer(); for(int i = 0; i < s; i++){ sb.append(UUIDUtil.getRandomCode()); } str = sb.toString(); }else{ str = UUIDUtil.getRandomCode().substring(0, num); } }else{ throw new Exception("参数只能大于0"); } return str; } /** * 获取根据当前时间的字符串数据 * @return */ public synchronized static String getTimeStr(){ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddhhmmssS"); return simpleDateFormat.format(new Date()); } /** * @Description: 获取数字随机码 * @Author pzb * @Date 2021/8/11 16:52 * @Param * @Return * @Exception */ public static String getNumberRandom(Integer num){ if(null == num){ num = 32; } StringBuffer sb = new StringBuffer(); for(int i = 0; i < num; i++){ sb.append(Double.valueOf(Math.random() * 10).intValue()); } return sb.toString(); } } cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java
@@ -52,7 +52,7 @@ @TableField("coursePackageId") private Integer coursePackageId; /** * 支付方式(1=微信,2=支付宝,3=玩湃币) * 支付方式(1=微信,2=支付宝,3=玩湃币,4=积分,5=积分+微信,6=积分+支付宝) */ @TableField("payType") private Integer payType; @@ -77,7 +77,7 @@ @TableField("cashPayment") private BigDecimal cashPayment; /** * 玩湃币价格 * 玩湃币价格/积分 */ @TableField("playPaiCoin") private Integer playPaiCoin;