From bf6dec40a0fffeb65d698640a2ca1afdb7576754 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期日, 30 三月 2025 22:45:11 +0800 Subject: [PATCH] 惠民卡代码 --- cloud-server-activity/src/main/java/com/dsh/activity/controller/HuiminController.java | 315 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 302 insertions(+), 13 deletions(-) diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/HuiminController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/HuiminController.java index 3173671..2c4eab8 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/controller/HuiminController.java +++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/HuiminController.java @@ -15,6 +15,7 @@ import com.dsh.activity.feignclient.model.TAppUser; import com.dsh.activity.feignclient.other.OperatorClient; 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; @@ -25,23 +26,21 @@ import com.dsh.activity.model.request.CommodityRequest; import com.dsh.activity.model.request.CouponDataVo; import com.dsh.activity.model.request.CouponPackageReq; -import com.dsh.activity.model.response.CouponPackageResp; -import com.dsh.activity.model.response.HuiminAgreementVO; -import com.dsh.activity.model.response.HuiminCardVO; +import com.dsh.activity.model.response.*; import com.dsh.activity.service.*; -import com.dsh.activity.util.GDMapGeocodingUtil; -import com.dsh.activity.util.ResultUtil; -import com.dsh.activity.util.TokenUtil; -import com.dsh.activity.util.ToolUtil; +import com.dsh.activity.util.*; import com.google.gson.Gson; import io.swagger.annotations.*; +import io.swagger.models.auth.In; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.tags.EditorAwareTag; import javax.annotation.Resource; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.LocalDateTime; +import java.time.ZoneId; import java.util.*; import java.util.stream.Collectors; @@ -68,18 +67,168 @@ private HuiminCardService huiminCardService; @Resource private PayHuiminService payHuiminService; + @Resource + private SiteClient siteClient; + @Resource + private StoreClient storeClient; + @Resource + private PayMoneyUtil payMoneyUtil; + @Resource + private HuiminRecordService huiminRecordService; + @Resource + private StudentClient studentClient; @Autowired private TokenUtil tokenUtil; + private String smid = "2088330203191220";//平台支付宝商户号 + public static void main(String[] args) { + Date date = new Date(); + date.setMonth(11); + date.setDate(31); + date.setHours(23); + date.setMinutes(59); + date.setSeconds(59); + System.err.println(date); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + System.err.println(simpleDateFormat.format(date)); + } + /** + * 查看惠民卡详情 + */ + @ResponseBody + @PostMapping("/payHuiminCard") + @ApiOperation(value = "购买惠民卡") + @ApiImplicitParams({ + @ApiImplicitParam(value = "惠民卡id", name = "id", dataType = "int", required = true), + @ApiImplicitParam(value = "支付方式1微信2支付宝", name = "payType", dataType = "int", required = true), + @ApiImplicitParam(value = "绑定学员ids多,个逗号拼接", name = "studentIds", dataType = "String", required = true), + @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") + }) + public ResultUtil<THuiminCard> payHuiminCard(Integer id,Integer payType,String studentIds) { + try { + Integer uid = tokenUtil.getUserIdFormRedis(); + if (null == uid) { + return ResultUtil.tokenErr(); + } + THuiminCard huiminCard = huiminCardService.getById(id); + TPayHuimin tPayHuimin = new TPayHuimin(); + tPayHuimin.setSalesMoney(huiminCard.getSalesMoney()); + tPayHuimin.setAppUserId(uid); + tPayHuimin.setStudentId(studentIds); + switch (huiminCard.getHuiMinType()){ + case 1: + // 年度卡 + LocalDateTime localDateTime = LocalDateTime.now().plusDays(365); + // 将LocalDateTime转换为Date类型 + Date date = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()); + tPayHuimin.setEndTime(date); + break; + case 2: + // 年内卡 + Date date1 = new Date(); + date1.setMonth(11); + date1.setDate(31); + date1.setHours(23); + date1.setMinutes(59); + date1.setSeconds(59); + tPayHuimin.setEndTime(date1); + break; + } + tPayHuimin.setInsertTime(new Date()); + tPayHuimin.setStatus(1); + tPayHuimin.setPaymentType(payType); + tPayHuimin.setRefundStatus(1); + tPayHuimin.setCardId(huiminCard.getId()); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + tPayHuimin.setCode(sdf.format(new Date()) + UUIDUtil.getNumberRandom(5)); + switch (payType){ + case 1: + return payMoneyUtil.weixinpay("购买惠民卡"+"-"+0, "", tPayHuimin.getCode(), tPayHuimin.getSalesMoney().toString(), + "/huimin/callBack/weixinPayHuiminCallback", "APP", ""); + case 2: + return payMoneyUtil.alipay(smid,"购买惠民卡", "购买惠民卡", "", tPayHuimin.getCode(), tPayHuimin.getSalesMoney().toString(), + "/huimin/callBack/aliPayHuiminCallback"); + } - + } catch (Exception e) { + e.printStackTrace(); + return ResultUtil.success(); + } + return ResultUtil.success(); + } /** - * 查询注册赠送优惠券 判断当前优惠券限领数量 + * 查看惠民卡详情 + */ + @ResponseBody + @PostMapping("/getHuiminCardDetail") + @ApiOperation(value = "查看惠民卡详情") + @ApiImplicitParams({ + @ApiImplicitParam(value = "惠民卡id", name = "id", dataType = "int", required = true), + @ApiImplicitParam(value = "门店id", name = "storeId", dataType = "int", required = true), + @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") + }) + public ResultUtil<THuiminCard> getHuiminCardDetail(Integer id,Integer storeId) { + try { + Integer uid = tokenUtil.getUserIdFormRedis(); + if (null == uid) { + return ResultUtil.tokenErr(); + } + THuiminCard huiminCard = huiminCardService.getById(id); + List<TPayHuimin> payHuimins = payHuiminService.list(new LambdaQueryWrapper<TPayHuimin>() + .eq(TPayHuimin::getAppUserId, uid) + .ge(TPayHuimin::getEndTime,new Date()) + .eq(TPayHuimin::getStatus, 1)); + List<TPayHuimin> collect = payHuimins.stream().filter(e -> e.getCardId().equals(huiminCard.getId())).collect(Collectors.toList()); + if (!collect.isEmpty()){ + huiminCard.setIsBuy(1); + }else{ + huiminCard.setIsBuy(0); + } + List<Store> stores = storeClient.queryStoreByIds(Collections.singletonList(storeId)); + if (!stores.isEmpty()){ + Store store = stores.get(0); + Integer operatorId = store.getOperatorId(); + if (operatorId==null||operatorId==0){ + // 平台门店 + THuiminAgreement huiminAgreement = huiminAgreementService.getOne(new LambdaQueryWrapper<THuiminAgreement>() + .isNull(THuiminAgreement::getOperatorId)); + if (huiminAgreement!=null){ + List<THuiminAgreementSetting> list = huiminAgreementSettingService.list(new LambdaQueryWrapper<THuiminAgreementSetting>() + .eq(THuiminAgreementSetting::getAgreementId, huiminAgreement.getId())); + huiminCard.setAgreementSettings(list); + }else { + huiminCard.setAgreementSettings(new ArrayList<>()); + + } + }else{ + // 运营商门店 + THuiminAgreement huiminAgreement = huiminAgreementService.getOne(new LambdaQueryWrapper<THuiminAgreement>() + .eq(THuiminAgreement::getOperatorId,operatorId)); + if (huiminAgreement!=null){ + List<THuiminAgreementSetting> list = huiminAgreementSettingService.list(new LambdaQueryWrapper<THuiminAgreementSetting>() + .eq(THuiminAgreementSetting::getAgreementId, huiminAgreement.getId())); + huiminCard.setAgreementSettings(list); + }else { + huiminCard.setAgreementSettings(new ArrayList<>()); + } + } + }else{ + huiminCard.setAgreementSettings(new ArrayList<>()); + } + + return ResultUtil.success(huiminCard); + } catch (Exception e) { + e.printStackTrace(); + return ResultUtil.success(); + } + } + /** + * 惠民卡富文本内容-惠民卡列表 */ @ResponseBody @PostMapping("/getHuiminAgreementAndList") @@ -98,15 +247,13 @@ } pageNo = (pageNo - 1) * pageSize; HuiminAgreementVO huiminAgreementVO = new HuiminAgreementVO(); - List<THuiminCard> list = huiminCardService.list(new LambdaQueryWrapper<THuiminCard>() - .eq(THuiminCard::getStoreId, storeId)); - if (list.isEmpty()){ + List<THuiminCard> cardList = huiminCardService.getHuiminAgreementAndList(pageNo,pageSize,storeId); + if (cardList.isEmpty()){ // 没有配置惠民卡 展示富文本内容 huiminAgreementVO.setShowType(1); }else{ huiminAgreementVO.setShowType(2); } - List<THuiminCard> cardList = huiminCardService.getHuiminAgreementAndList(pageNo,pageSize,storeId); List<TPayHuimin> payHuimins = payHuiminService.list(new LambdaQueryWrapper<TPayHuimin>() .eq(TPayHuimin::getAppUserId, uid) .ge(TPayHuimin::getEndTime,new Date()) @@ -118,8 +265,10 @@ List<TPayHuimin> collect = payHuimins.stream().filter(e -> e.getCardId().equals(huiminCardVO.getId())).collect(Collectors.toList()); if (!collect.isEmpty()){ huiminCardVO1.setCover(huiminCardVO.getBuyCover()); + huiminCardVO1.setIsBuy(1); }else{ huiminCardVO1.setCover(huiminCardVO.getUnBuyCover()); + huiminCardVO1.setIsBuy(0); } huiminCardVOS.add(huiminCardVO1); } @@ -130,6 +279,146 @@ return ResultUtil.success(new HuiminAgreementVO()); } } + /** + * 惠民卡富文本内容-惠民卡列表 + */ + @ResponseBody + @PostMapping("/myHuiminCardList") + @ApiOperation(value = "个人中心-我的惠民卡") + @ApiImplicitParams({ + @ApiImplicitParam(value = "页码,首页1", name = "pageSize", dataType = "int", required = true), + @ApiImplicitParam(value = "页条数", name = "pageNo", dataType = "int", required = true), + @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") + }) + public ResultUtil<List<MyHuiminCardVO>> myHuiminCardList(Integer pageSize, Integer pageNo) { + try { + Integer uid = tokenUtil.getUserIdFormRedis(); + if (null == uid) { + return ResultUtil.tokenErr(); + } + pageNo = (pageNo - 1) * pageSize; + List<MyHuiminCardVO> cardList = huiminCardService.getMyHuiminCardList(pageNo,pageSize,uid); + List<THuiminCard> list = huiminCardService.list(); + for (MyHuiminCardVO myHuiminCardVO : cardList) { + if (myHuiminCardVO.getEndTime().before(new Date())){ + // 已过期 + myHuiminCardVO.setIsExpire(1); + }else{ + myHuiminCardVO.setIsExpire(0); + } + int count = huiminRecordService.count(new LambdaQueryWrapper<THuiminRecord>() + .eq(THuiminRecord::getHuiminCardId, myHuiminCardVO.getCardId())); + // 购卡7日内没有使用记录可退款。超过7日不管有没有使用记录都不能退款 + if (new Date().after(DateUtil.addDay(myHuiminCardVO.getPaymentTime(),7))){ + // 超过七天不可退款 + myHuiminCardVO.setIsRefund(0); + }else if (count>=7){ + myHuiminCardVO.setIsRefund(0); + }else{ + myHuiminCardVO.setIsRefund(1); + } + THuiminCard huiminCard = list.stream().filter(e -> e.getId().equals(myHuiminCardVO.getCardId())).findFirst().orElse(null); + if (null!=huiminCard){ + myHuiminCardVO.setCover(huiminCard.getBuyCover()); + } + // 查询绑定人员列表 + List<TStudent> studentByIds = studentClient.getStudentByIds(myHuiminCardVO.getStudentId()); + myHuiminCardVO.setStudentList(studentByIds); + } + return ResultUtil.success(cardList); + } catch (Exception e) { + e.printStackTrace(); + return ResultUtil.success(new ArrayList<>()); + } + } + /** + * 个人中心-我的惠民卡-退款 + */ + @ResponseBody + @PostMapping("/refund") + @ApiOperation(value = "个人中心-我的惠民卡-退款") + @ApiImplicitParams({ + @ApiImplicitParam(value = "支付记录id", name = "id", dataType = "int", required = true), + @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") + }) + public ResultUtil<List<MyHuiminCardVO>> refund(Integer id) { + try { + Integer uid = tokenUtil.getUserIdFormRedis(); + if (null == uid) { + return ResultUtil.tokenErr(); + } + TPayHuimin tPayHuimin = payHuiminService.getById(id); + if (tPayHuimin==null){ + return ResultUtil.error("订单不存在"); + } + if (tPayHuimin.getStatus()==3 && tPayHuimin.getRefundStatus()!=1){ + return ResultUtil.error("不可重复退款"); + } + if (tPayHuimin.getPaymentType()==1){ + Map<String, String> map = payMoneyUtil.wxRefund(tPayHuimin.getOrderNumber(), tPayHuimin.getCode(), + tPayHuimin.getSalesMoney().toString(), tPayHuimin.getSalesMoney().toString(), "/base/worldCup/wxRefundWorldCupCallback"); + if(!"SUCCESS".equals(map.get("return_code"))){ + System.err.println("-------------微信退款失败---------"); + System.err.println(map.get("return_msg")); + return ResultUtil.error("微信退款失败"); + } + }else{ + Map<String, String> map = payMoneyUtil.aliRefund(tPayHuimin.getOrderNumber(), tPayHuimin.getSalesMoney().toString()); + String return_code = map.get("code"); + if (!"10000".equals(return_code)) { + return ResultUtil.error(map.get("msg")); + } + String refund_id = map.get("trade_no"); + tPayHuimin.setRefundNumber(refund_id); + tPayHuimin.setRefundTime(new Date()); + tPayHuimin.setStatus(3); + tPayHuimin.setRefundStatus(2); + payHuiminService.updateById(tPayHuimin); + } + + return ResultUtil.success(); + } catch (Exception e) { + e.printStackTrace(); + return ResultUtil.success(new ArrayList<>()); + } + } + /** + * 个人中心-我的惠民卡-查看详情 + */ + @ResponseBody + @PostMapping("/myHuiminCardDetail") + @ApiOperation(value = "个人中心-我的惠民卡-查看详情") + @ApiImplicitParams({ + @ApiImplicitParam(value = "支付记录id", name = "id", dataType = "int", required = true), + @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") + }) + public ResultUtil<MyHuiminCardDetailVO> myHuiminCardDetail(Integer id) { + try { + Integer uid = tokenUtil.getUserIdFormRedis(); + if (null == uid) { + return ResultUtil.tokenErr(); + } + TPayHuimin tPayHuimin = payHuiminService.getById(id); + if (tPayHuimin==null){ + return ResultUtil.error("惠民卡不存在"); + } + THuiminCard byId = huiminCardService.getById(tPayHuimin.getCardId()); + MyHuiminCardDetailVO myHuiminCardDetailVO = new MyHuiminCardDetailVO(); +// myHuiminCardDetailVO.setQrCode(); + myHuiminCardDetailVO.setCardId(tPayHuimin.getCardId()); + if (byId!=null){ + myHuiminCardDetailVO.setIntroduce(byId.getIntroduce()); + } + myHuiminCardDetailVO.setEndTime(tPayHuimin.getEndTime()); + // 查询绑定人员列表 + List<TStudent> studentByIds = studentClient.getStudentByIds(tPayHuimin.getStudentId()); + myHuiminCardDetailVO.setStudentList(studentByIds); + return ResultUtil.success(myHuiminCardDetailVO); + } catch (Exception e) { + e.printStackTrace(); + return ResultUtil.success(new MyHuiminCardDetailVO()); + } + } } -- Gitblit v1.7.1