cloud-server-account/src/main/java/com/dsh/account/controller/ClassDetailsController.java
@@ -260,13 +260,10 @@ vo.setStuPhone(ToolUtil.isEmpty(sts.getPhone()) ? "" : sts.getPhone()); vo.setIdCard(ToolUtil.isEmpty(sts.getIdCard()) ? "" : sts.getIdCard()); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); vo.setBirthday(simpleDateFormat.format(sts.getBirthday())); vo.setStuName(sts.getName()); if (sts.getBirthday()!=null){ vo.setStuAge(DateUtil.age(sts.getBirthday())); }else{ vo.setStuAge(18); vo.setBirthday(simpleDateFormat.format(sts.getBirthday())); } vo.setStuHeight(sts.getHeight()); vo.setStuWeight(sts.getWeight()); @@ -278,6 +275,7 @@ } return ResultUtil.success(stuListVos); } catch (Exception e) { e.printStackTrace(); return ResultUtil.runErr(); } } cloud-server-activity/src/main/java/com/dsh/activity/controller/HuiminController.java
@@ -17,10 +17,7 @@ import com.dsh.activity.feignclient.other.RegionClient; import com.dsh.activity.feignclient.other.SiteClient; import com.dsh.activity.feignclient.other.StoreClient; import com.dsh.activity.feignclient.other.model.CityDataAndProvinceDataVo; import com.dsh.activity.feignclient.other.model.Store; import com.dsh.activity.feignclient.other.model.StoreInfoDto; import com.dsh.activity.feignclient.other.model.TOperatorCity; import com.dsh.activity.feignclient.other.model.*; import com.dsh.activity.model.CouponListVo; import com.dsh.activity.model.CouponRecordQuery; import com.dsh.activity.model.request.CommodityRequest; @@ -103,6 +100,20 @@ return ResultUtil.tokenErr(); } THuiminCard huiminCard = huiminCardService.getById(id); if (huiminCard.getGrantCount()!=null){ if (huiminCard.getGrantCount()<=payHuiminService.lambdaQuery().eq(TPayHuimin::getCardId, huiminCard.getId()) .eq(TPayHuimin::getStatus,2).count()){ return ResultUtil.error("该惠民卡已售完"); } } if (huiminCard.getLimitCount()!=null){ if (huiminCard.getLimitCount()<=payHuiminService.lambdaQuery().eq(TPayHuimin::getCardId, huiminCard.getId()) .eq(TPayHuimin::getStatus,2) .eq(TPayHuimin::getAppUserId, uid) .count()){ return ResultUtil.error("该惠民卡购买次数已达上限"); } } TPayHuimin tPayHuimin = new TPayHuimin(); tPayHuimin.setSalesMoney(huiminCard.getSalesMoney()); tPayHuimin.setAppUserId(uid); @@ -136,12 +147,14 @@ tPayHuimin.setCode(sdf.format(new Date()) + UUIDUtil.getNumberRandom(5)); System.err.println("支付数据"+tPayHuimin); payHuiminService.save(tPayHuimin); BigDecimal bigDecimal = new BigDecimal(studentIds.split(",").length); switch (payType){ case 1: return payMoneyUtil.weixinpay("购买惠民卡"+"-"+0, "", tPayHuimin.getCode(), tPayHuimin.getSalesMoney().toString(), return payMoneyUtil.weixinpay("购买惠民卡"+"-"+0, "", tPayHuimin.getCode(), tPayHuimin.getSalesMoney().multiply(bigDecimal).toString(), "/base/huimin/callBack/weixinPayHuiminCallback", "APP", ""); case 2: return payMoneyUtil.alipay(smid,"购买惠民卡", "购买惠民卡", "", tPayHuimin.getCode(), tPayHuimin.getSalesMoney().toString(), String string = tPayHuimin.getSalesMoney().multiply(bigDecimal).setScale(2).toString(); return payMoneyUtil.alipay(smid,"购买惠民卡", "购买惠民卡", "", tPayHuimin.getCode(), string, "/base/huimin/callBack/aliPayHuiminCallback"); } @@ -239,7 +252,8 @@ pageNo = (pageNo - 1) * pageSize; HuiminAgreementVO huiminAgreementVO = new HuiminAgreementVO(); List<THuiminCard> cardList = huiminCardService.getHuiminAgreementAndList(pageNo,pageSize,storeId); if (cardList.isEmpty()){ List<THuiminCard> cardListNolimit = huiminCardService.getHuiminAgreementAndListNolimit(storeId); if (cardListNolimit.isEmpty()){ // 没有配置惠民卡 展示富文本内容 huiminAgreementVO.setShowType(1); }else{ @@ -369,7 +383,20 @@ } if (tPayHuimin.getStatus()==3 && tPayHuimin.getRefundStatus()!=1){ return ResultUtil.error("不可重复退款"); } if (tPayHuimin.getEndTime().before(new Date())){ // 已过期 return ResultUtil.error("惠民卡已过期,不可退款"); } int count = huiminRecordService.count(new LambdaQueryWrapper<THuiminRecord>() .eq(THuiminRecord::getHuiminCardId, tPayHuimin.getCardId())); // 购卡7日内没有使用记录可退款。超过7日不管有没有使用记录都不能退款 if (new Date().after(DateUtil.addDay(tPayHuimin.getPaymentTime(),7))){ // 超过七天不可退款 return ResultUtil.error("惠民卡购买超过七天,不可退款"); }else if (count>=7){ // 使用记录大于等于7次不可退款 return ResultUtil.error("惠民卡使用记录大于等于7次,不可退款"); } if (tPayHuimin.getPaymentType()==1){ Map<String, String> map = payMoneyUtil.wxRefund(tPayHuimin.getOrderNumber(), tPayHuimin.getCode(), @@ -421,8 +448,17 @@ } THuiminCard byId = huiminCardService.getById(tPayHuimin.getCardId()); MyHuiminCardDetailVO myHuiminCardDetailVO = new MyHuiminCardDetailVO(); String storeIds = byId.getStoreIds(); String temp ="{\"storeIds\":\"" +storeIds+"\","+"\"useWeeks:\"\""+byId.getUseWeeks()+"\","+"\"useTimes:\""+byId.getUseTimes()+"\","+"\"unUseTimes:\""+byId.getUnUseTimes()+"\"}"; String siteIds = ""; if (byId.getUseScope()==2){ siteIds = byId.getUseIds(); }else{ siteIds = siteClient.querySiteByStoreIds(byId.getStoreIds()) .stream() .map(Site::getId) .map(String::valueOf) .collect(Collectors.joining(",")); } String temp ="{\"siteIds\":\"" +siteIds+"\","+"\"useTimes:\"\""+byId.getUseWeeks()+"\","+"\"unUseTimes:\""+byId.getUnUseTimes()+"\"}"; myHuiminCardDetailVO.setQrCode(temp); myHuiminCardDetailVO.setCardId(tPayHuimin.getCardId()); myHuiminCardDetailVO.setHuiminCard(byId); @@ -437,5 +473,28 @@ return ResultUtil.success(new MyHuiminCardDetailVO()); } } /** * 获取添加人员、选择人员说明文案 */ @ResponseBody @PostMapping("/getContentForStudent") @ApiOperation(value = "获取添加人员、选择人员说明文案") @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil<THuiminAgreement> getContentForStudent() { try { Integer uid = tokenUtil.getUserIdFormRedis(); if (null == uid) { return ResultUtil.tokenErr(); } THuiminAgreement one = huiminAgreementService.lambdaQuery() .isNull(THuiminAgreement::getOperatorId).last("limit 1").one(); return ResultUtil.success(one); } catch (Exception e) { e.printStackTrace(); return ResultUtil.success(new THuiminAgreement()); } } } cloud-server-activity/src/main/java/com/dsh/activity/entity/THuiminAgreement.java
@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; @@ -23,6 +25,7 @@ @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName("t_huimin_agreement") @ApiModel(value = "THuiminAgreement对象", description = "惠民卡协议管理") public class THuiminAgreement extends Model<THuiminAgreement> { private static final long serialVersionUID = 1L; /** @@ -34,21 +37,27 @@ * 运营商id 选择默认传null */ @TableField("operatorId") @ApiModelProperty("运营商id") private Integer operatorId; /** *添加人员说明文案 */ @TableField("addUserRemark") @ApiModelProperty("添加人员说明文案") private String addUserRemark; /** *选择人员说明文案 */ @ApiModelProperty("选择人员说明文案") @TableField("selectUserRemark") private String selectUserRemark; /** * 门店无惠民卡介绍页 */ @TableField("storeNoHuiminCardIntro") @ApiModelProperty("门店无惠民卡介绍页") private String storeNoHuiminCardIntro; @TableField(exist = false) cloud-server-activity/src/main/java/com/dsh/activity/entity/THuiminCard.java
@@ -159,7 +159,7 @@ */ @ApiModelProperty(value = "排序") @TableField("sort") private String sort; private Integer sort; /** *门店id 当使用范围为场地的时候存储门店id cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/SiteClient.java
@@ -4,6 +4,8 @@ import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import java.util.List; /** * @author zhibing.pu * @Date 2023/7/18 11:38 @@ -20,4 +22,12 @@ */ @PostMapping("/site/querySiteById") Site querySiteById(Integer id); /** * 根据id获取场地数据 * * @param ids * @return */ @PostMapping("/site/querySiteByStoreIds") List<Site> querySiteByStoreIds(String ids); } cloud-server-activity/src/main/java/com/dsh/activity/mapper/HuiminCardMapper.java
@@ -16,6 +16,7 @@ public interface HuiminCardMapper extends BaseMapper<THuiminCard> { List<THuiminCard> getHuiminAgreementAndList(@Param("pageNo") Integer pageNo,@Param("pageSize") Integer pageSize , @Param("storeId")Integer storeId); List<THuiminCard> getHuiminAgreementAndListNolimit(@Param("storeId")Integer storeId); List<MyHuiminCardVO> getMyHuiminCardList(@Param("pageNo") Integer pageNo,@Param("pageSize") Integer pageSize ,@Param("appUserId")Integer appUserId); } cloud-server-activity/src/main/java/com/dsh/activity/model/response/MyHuiminCardVO.java
@@ -27,7 +27,7 @@ private Integer isExpire; @ApiModelProperty("是否可以退款 0否1是") private Integer isRefund; @ApiModelProperty("状态 前端忽略") @ApiModelProperty("状态1待支付2使用中3已退款") private Integer status; @ApiModelProperty("有效期至") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") cloud-server-activity/src/main/java/com/dsh/activity/service/HuiminCardService.java
@@ -22,6 +22,7 @@ public interface HuiminCardService extends IService<THuiminCard> { List<THuiminCard> getHuiminAgreementAndList(Integer pageNo, Integer pageSize, Integer storeId); List<THuiminCard> getHuiminAgreementAndListNolimit(Integer storeId); List<MyHuiminCardVO> getMyHuiminCardList(Integer pageNo, Integer pageSize, Integer appUserId); } cloud-server-activity/src/main/java/com/dsh/activity/service/impl/HuiminCardServiceImpl.java
@@ -28,6 +28,10 @@ public List<THuiminCard> getHuiminAgreementAndList(Integer pageNo, Integer pageSize, Integer storeId) { return this.baseMapper.getHuiminAgreementAndList(pageNo,pageSize,storeId); } @Override public List<THuiminCard> getHuiminAgreementAndListNolimit(Integer storeId) { return this.baseMapper.getHuiminAgreementAndListNolimit(storeId); } @Override public List<MyHuiminCardVO> getMyHuiminCardList(Integer pageNo, Integer pageSize,Integer appUserId) { cloud-server-activity/src/main/java/com/dsh/activity/util/PayMoneyUtil.java
@@ -157,6 +157,9 @@ /** * 支付宝支付 */ /** * 支付宝支付 */ public ResultUtil alipay(String smid,String body, String subject, String passbackParams, String outTradeNo, String amount, String notifyUrl) { // //构造client // CertAlipayRequest certAlipayRequest = new CertAlipayRequest (); @@ -208,6 +211,8 @@ // } catch (AlipayApiException e ) { // e.printStackTrace(); // } //实例化客户端 AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", aliAppid, appPrivateKey, "json", "UTF-8", alipay_public_key, "RSA2"); //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay @@ -238,6 +243,7 @@ model.setExtendParams(extendParams); request.setBizModel(model); request.setNotifyUrl(callbackPath + notifyUrl); try { //这里和普通的接口调用不同,使用的是sdkExecute AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request); cloud-server-activity/src/main/resources/mapper/HuiminCardMapper.xml
@@ -14,10 +14,21 @@ limit #{pageNo}, #{pageSize} </select> <select id="getHuiminAgreementAndListNolimit" resultType="com.dsh.activity.entity.THuiminCard"> select t1.* from t_huimin_card t1 where find_in_set(#{storeId},t1.storeIds) and t1.endTime >= now() and t1.status = 1 order by t1.sort desc </select> <select id="getMyHuiminCardList" resultType="com.dsh.activity.model.response.MyHuiminCardVO"> select t1.* from t_pay_huimin t1 where t1.status = 2 and t1.appUserId = #{appUserId} where t1.status!=1 and t1.appUserId = #{appUserId} limit #{pageNo}, #{pageSize} </select> cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/feignclient/account/StudentClient.java
@@ -5,7 +5,9 @@ import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import java.util.Date; import java.util.List; /** @@ -33,4 +35,6 @@ @PostMapping("/student/queryById") TStudent queryById(Integer id); } cloud-server-competition/src/main/java/com/dsh/competition/feignclient/account/StudentClient.java
@@ -6,6 +6,7 @@ import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import java.util.List; @@ -34,4 +35,11 @@ @PostMapping("/student/queryById") TStudent queryById(Integer id); /** * 添加学员 * * @return */ @RequestMapping("/base/student/addStudent") public Object addStudent(@RequestBody TStudent student); } cloud-server-competition/src/main/java/com/dsh/competition/service/impl/ParticipantServiceImpl.java
@@ -23,6 +23,7 @@ import com.dsh.competition.util.JuHeUtil; import com.dsh.competition.util.ResultUtil; import com.dsh.competition.util.ToolUtil; import io.undertow.util.DateUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -88,6 +89,26 @@ participant.setState(1); participant.setInsertTime(new Date()); this.save(participant); TStudent tStudent = new TStudent(); tStudent.setAppUserId(uid); tStudent.setName(addParticipant.getName()); tStudent.setPhone(addParticipant.getPhone()); if (ToolUtil.isNotEmpty(addParticipant.getBirthday())){ Date date = DateUtils.parseDate(addParticipant.getBirthday()); tStudent.setBirthday(date); }else{ String birthDateStr = addParticipant.getIdcard().substring(6, 14); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); Date parse = dateFormat.parse(birthDateStr); tStudent.setBirthday(parse); } tStudent.setSex(addParticipant.getGender()); tStudent.setIdCard(addParticipant.getIdcard()); tStudent.setState(1); tStudent.setInsertTime(new Date()); tStudent.setHeadImg(addParticipant.getHeadImg()); tStudent.setIsDefault(2); studentClient.addStudent(tStudent); return ResultUtil.success(); } cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/THuiminCard.java
@@ -126,7 +126,7 @@ *使用范围1门店2场地 */ @TableField("useScope") private String useScope; private Integer useScope; /** *根据适用范围,存储门店id或场地id,多个逗号分隔 */ cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/THuiminCardController.java
@@ -184,12 +184,39 @@ @PostMapping(value = "/add") @ResponseBody public Object add(THuiminCard tHuiminCard) { int a = 0; if (tHuiminCard.getUseScope()==1){ tHuiminCard.setStoreIds(tHuiminCard.getUseIds()); }else{ StringBuilder storeIds = new StringBuilder(); for (String s : tHuiminCard.getUseIds().split(",")) { TSite site = tSiteService.getById(s); if (site!=null){ storeIds.append(site.getStoreId()).append(","); } } StringBuilder stringBuilder = storeIds.deleteCharAt(storeIds.length() - 1); tHuiminCard.setStoreIds(stringBuilder.toString()); } huiminCardClient.save(tHuiminCard); return SUCCESS_TIP; } @RequestMapping(value = "/update") @ResponseBody public Object update(THuiminCard tHuiminCard) { if (tHuiminCard.getUseScope()==1){ tHuiminCard.setStoreIds(tHuiminCard.getUseIds()); }else{ StringBuilder storeIds = new StringBuilder(); for (String s : tHuiminCard.getUseIds().split(",")) { TSite site = tSiteService.getById(s); if (site!=null){ storeIds.append(site.getStoreId()).append(","); } } StringBuilder stringBuilder = storeIds.deleteCharAt(storeIds.length() - 1); tHuiminCard.setStoreIds(stringBuilder.toString()); } huiminCardClient.updateById(tHuiminCard); return SUCCESS_TIP; } cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java
@@ -79,7 +79,8 @@ @Resource private CourseRecordClient courseRecordClient; @Resource private StoreService storeService; @Autowired private RedisUtil redisUtil; @@ -320,6 +321,22 @@ return null; } } /** * 根据id获取数据 * * @param ids * @return */ @ResponseBody @PostMapping("/site/querySiteByStoreIds") public List<Site> querySiteByStoreIds(@RequestBody String ids) { try { return siteService.lambdaQuery().in(Site::getStoreId,Arrays.asList(ids.split(","))).list(); } catch (Exception e) { e.printStackTrace(); return null; } } @ResponseBody