From 852b685fc99028dbd47f14e50939e00216ee26e7 Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Thu, 15 May 2025 10:50:28 +0800 Subject: [PATCH] feat(mall): 新增新人礼设置功能 --- src/main/java/cc/mrbird/febs/common/enumerates/CommonDictionaryEnum.java | 4 src/main/java/cc/mrbird/febs/mall/controller/ViewScoreController.java | 20 ++++ src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java | 16 +++ src/main/java/cc/mrbird/febs/mall/controller/AdminScoreController.java | 12 ++ src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 41 +++++-- src/main/java/cc/mrbird/febs/mall/dto/signActivity/ApiNewGiftSettingDto.java | 22 ++++ src/main/resources/templates/febs/views/modules/score/newGiftSetting.html | 102 ++++++++++++++++++++ src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java | 71 +++++++------ 8 files changed, 242 insertions(+), 46 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/CommonDictionaryEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/CommonDictionaryEnum.java index c5dd5d6..ecb2611 100644 --- a/src/main/java/cc/mrbird/febs/common/enumerates/CommonDictionaryEnum.java +++ b/src/main/java/cc/mrbird/febs/common/enumerates/CommonDictionaryEnum.java @@ -4,6 +4,10 @@ @Getter public enum CommonDictionaryEnum { + /** + * 新人礼设置 + */ + NEW_GIFT_SETTING("NEW_GIFT_SETTING", "NEW_GIFT_SETTING"), /** * 开屏页设置 diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminScoreController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminScoreController.java index ed40bb2..6144b79 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/AdminScoreController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminScoreController.java @@ -1,8 +1,10 @@ package cc.mrbird.febs.mall.controller; import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.common.enumerates.CommonDictionaryEnum; import cc.mrbird.febs.common.enumerates.DataDictionaryEnum; import cc.mrbird.febs.mall.dto.ScoreSettingDto; +import cc.mrbird.febs.mall.dto.signActivity.ApiNewGiftSettingDto; import cc.mrbird.febs.mall.service.ICommonService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -30,4 +32,14 @@ return new FebsResponse().success(); } + @PostMapping(value = "/addNewGiftSetting") + public FebsResponse addNewGiftSetting(ApiNewGiftSettingDto dto) { + commonService.addDataDic( + CommonDictionaryEnum.NEW_GIFT_SETTING.getType(), + CommonDictionaryEnum.NEW_GIFT_SETTING.getCode(), + dto, + "新人礼设置"); + return new FebsResponse().success(); + } + } diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ViewScoreController.java b/src/main/java/cc/mrbird/febs/mall/controller/ViewScoreController.java index dd05b26..8379e16 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/ViewScoreController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/ViewScoreController.java @@ -1,9 +1,11 @@ package cc.mrbird.febs.mall.controller; import cc.mrbird.febs.common.entity.FebsConstant; +import cc.mrbird.febs.common.enumerates.CommonDictionaryEnum; import cc.mrbird.febs.common.enumerates.DataDictionaryEnum; import cc.mrbird.febs.common.utils.FebsUtil; import cc.mrbird.febs.mall.dto.ScoreSettingDto; +import cc.mrbird.febs.mall.dto.signActivity.ApiNewGiftSettingDto; import cc.mrbird.febs.mall.entity.DataDictionaryCustom; import cc.mrbird.febs.mall.entity.MallGoods; import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper; @@ -39,6 +41,24 @@ return FebsUtil.view("modules/score/setting"); } + + /** + * 新人礼设置 + * @param model + * @return + */ + @GetMapping("newGiftSetting") + public String newGiftSetting(Model model) { + DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + CommonDictionaryEnum.NEW_GIFT_SETTING.getType(), + CommonDictionaryEnum.NEW_GIFT_SETTING.getCode() + ); + if (dic != null) { + model.addAttribute("obj", JSONObject.parseObject(dic.getValue(), ApiNewGiftSettingDto.class)); + } + return FebsUtil.view("modules/score/newGiftSetting"); + } + @GetMapping("goods") public String goodsList() { return FebsUtil.view("modules/score/goodsList"); diff --git a/src/main/java/cc/mrbird/febs/mall/dto/signActivity/ApiNewGiftSettingDto.java b/src/main/java/cc/mrbird/febs/mall/dto/signActivity/ApiNewGiftSettingDto.java new file mode 100644 index 0000000..146c39a --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/signActivity/ApiNewGiftSettingDto.java @@ -0,0 +1,22 @@ +package cc.mrbird.febs.mall.dto.signActivity; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@Data +@ApiModel(value = "ApiNewGiftSettingDto", description = "参数类") +public class ApiNewGiftSettingDto { + /** + * 是否开启新人礼 + */ + private int state; + + /** + * 积分 + */ + private String prizeScore; + /** + * 优惠券ID + */ + private Long couponId; +} diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java index d9bab10..6b83062 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java @@ -357,6 +357,11 @@ return new FebsResponse().success().message("设置成功"); } + public static void main(String[] args) { + String pwd = SecureUtil.md5("123456"); + System.out.println(pwd); + } + @Override public FebsResponse modifyMemberInfo(ModifyMemberInfoDto modifyMemberInfoDto) { MallMember member = LoginUserUtil.getLoginUser(); @@ -1521,39 +1526,39 @@ return new FebsResponse().success().data(apiMoneyFlowHeaderVo); } - public static void main(String[] args) { - Long userld = 16425L; - String shopAccount = "爱和美医疗"; - String shopPwd = "blnka2005"; - - HashMap<String, String> objectObjectHashMap = new HashMap<>(); - - objectObjectHashMap.put("shopAccount",shopAccount); - objectObjectHashMap.put("shopPwd",shopPwd); - objectObjectHashMap.put("userId",userld.toString()); - - //sign= MD5(shopAccount+shopPwd+userId) - StringBuffer stringBuffer = new StringBuffer(); - stringBuffer.append(shopAccount); - stringBuffer.append(shopPwd); - stringBuffer.append(userld); - String sign = MD5.MD5Encode(stringBuffer.toString()); - objectObjectHashMap.put("sign",sign); - - System.out.println(sign); - - System.out.println(objectObjectHashMap); - String url = "https://data.muchun.co/api/getCustomerCheckRecords"; - String result = HttpCurlUtil.sendPost(url, objectObjectHashMap); - Integer retCode = JSONUtil.parseObj(result).getInt("retCode"); - String message = JSONUtil.parseObj(result).getStr("message"); - if(0 != retCode){ - System.out.println(message); - } - - JSONArray data = JSONUtil.parseObj(result).getJSONArray("data"); - System.out.println(data); - } +// public static void main(String[] args) { +// Long userld = 16425L; +// String shopAccount = "爱和美医疗"; +// String shopPwd = "blnka2005"; +// +// HashMap<String, String> objectObjectHashMap = new HashMap<>(); +// +// objectObjectHashMap.put("shopAccount",shopAccount); +// objectObjectHashMap.put("shopPwd",shopPwd); +// objectObjectHashMap.put("userId",userld.toString()); +// +// //sign= MD5(shopAccount+shopPwd+userId) +// StringBuffer stringBuffer = new StringBuffer(); +// stringBuffer.append(shopAccount); +// stringBuffer.append(shopPwd); +// stringBuffer.append(userld); +// String sign = MD5.MD5Encode(stringBuffer.toString()); +// objectObjectHashMap.put("sign",sign); +// +// System.out.println(sign); +// +// System.out.println(objectObjectHashMap); +// String url = "https://data.muchun.co/api/getCustomerCheckRecords"; +// String result = HttpCurlUtil.sendPost(url, objectObjectHashMap); +// Integer retCode = JSONUtil.parseObj(result).getInt("retCode"); +// String message = JSONUtil.parseObj(result).getStr("message"); +// if(0 != retCode){ +// System.out.println(message); +// } +// +// JSONArray data = JSONUtil.parseObj(result).getJSONArray("data"); +// System.out.println(data); +// } } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java index 65239cf..98822cb 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java @@ -543,23 +543,23 @@ if (OrderStatusEnum.WAIT_PAY.getValue() != orderInfo.getStatus()) { throw new FebsException("订单状态不能支付"); } - //先支付积分部分 - if(orderInfo.getScoreAmount().compareTo(BigDecimal.ZERO) > 0){ - balanceScorePay(orderInfo, payOrderDto.getTradePwd(), "prizeScore"); - mallMoneyFlowService.addMoneyFlow( - member.getId(), - orderInfo.getAmount().negate(), - ScoreFlowTypeEnum.PAY.getValue(), - orderInfo.getOrderNo(), - FlowTypeEnum.PRIZE_SCORE.getValue(), - StrUtil.format(ScoreFlowTypeEnum.PAY.getDesc(),orderInfo.getScoreAmount()), - 2 - ); - } String payResultStr = ""; String wxResultStr = ""; if(orderInfo.getAmount().compareTo(BigDecimal.ZERO) <= 0){ + //先支付积分部分 + if(orderInfo.getScoreAmount().compareTo(BigDecimal.ZERO) > 0){ + balanceScorePay(orderInfo, payOrderDto.getTradePwd(), "prizeScore"); + mallMoneyFlowService.addMoneyFlow( + member.getId(), + orderInfo.getScoreAmount().negate(), + ScoreFlowTypeEnum.PAY.getValue(), + orderInfo.getOrderNo(), + FlowTypeEnum.PRIZE_SCORE.getValue(), + StrUtil.format(ScoreFlowTypeEnum.PAY.getDesc(),orderInfo.getScoreAmount()), + 2 + ); + } orderInfo.setPayOrderNo(orderInfo.getOrderNo()); orderInfo.setPayMethod("积分支付"); orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue()); @@ -591,8 +591,23 @@ agentProducer.sendOrderReturn(orderInfo.getId()); break; case "3": + payResultStr = balancePay(orderInfo, payOrderDto.getTradePwd(), "balance"); + //先支付积分部分 + if(orderInfo.getScoreAmount().compareTo(BigDecimal.ZERO) > 0){ + balanceScorePay(orderInfo, payOrderDto.getTradePwd(), "prizeScore"); + mallMoneyFlowService.addMoneyFlow( + member.getId(), + orderInfo.getScoreAmount().negate(), + ScoreFlowTypeEnum.PAY.getValue(), + orderInfo.getOrderNo(), + FlowTypeEnum.PRIZE_SCORE.getValue(), + StrUtil.format(ScoreFlowTypeEnum.PAY.getDesc(),orderInfo.getScoreAmount()), + 2 + ); + } + orderInfo.setPayOrderNo(orderInfo.getOrderNo()); orderInfo.setPayMethod("余额支付"); orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue()); diff --git a/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java b/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java index 17aff9f..32b7304 100644 --- a/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java +++ b/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java @@ -23,6 +23,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -320,6 +321,21 @@ order.setPayOrderNo(transaction_id); mallOrderInfoMapper.updateById(order); + + //先支付积分部分 + if(order.getScoreAmount().compareTo(BigDecimal.ZERO) > 0){ + memberWalletService.reduce(order.getScoreAmount(), order.getMemberId(), "prizeScore"); + mallMoneyFlowService.addMoneyFlow( + order.getMemberId(), + order.getScoreAmount().negate(), + ScoreFlowTypeEnum.PAY.getValue(), + order.getOrderNo(), + FlowTypeEnum.PRIZE_SCORE.getValue(), + StrUtil.format(ScoreFlowTypeEnum.PAY.getDesc(),order.getScoreAmount()), + 2 + ); + } + agentProducer.sendOrderCoupon(order.getId()); // agentProducer.sendGetScoreMsg(order.getId()); diff --git a/src/main/resources/templates/febs/views/modules/score/newGiftSetting.html b/src/main/resources/templates/febs/views/modules/score/newGiftSetting.html new file mode 100644 index 0000000..bbdeb91 --- /dev/null +++ b/src/main/resources/templates/febs/views/modules/score/newGiftSetting.html @@ -0,0 +1,102 @@ +<div class="layui-fluid layui-anim febs-anim" id="new-gift-setting" lay-title="新人礼设置"> + <div class="layui-row layui-col-space8 febs-container"> + <form class="layui-form" action="" lay-filter="new-gift-setting-form"> + <div class="layui-card"> + <div class="layui-card-body"> + <blockquote class="layui-elem-quote blue-border">基本规则:</blockquote> + <div class="layui-form-item"> + <label class="layui-form-label">新人礼:</label> + <div class="layui-input-block"> + <input type="radio" name="state" value="0" title="关闭" /> + <input type="radio" name="state" value="1" title="开启" checked/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label ">赠送积分:</label> + <div class="layui-input-inline" style="width: 120px"> + <input type="text" name="prizeScore" lay-verify="number" th:value="${obj != null ? obj.prizeScore : null}" autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">优惠卷:</label> + <div class="layui-input-inline"> + <select name="couponId" class="coupon-select-category" id="couponCategarySelect"> + <option value="">请选择</option> + </select> + </div> + </div> + + + </div> + + <div class="layui-card-footer"> + <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="new-gift-setting-form-submit" id="submit">保存</button> + </div> + </div> + </form> + +<!-- <div class="layui-form-item febs-hide">--> +<!-- <button class="layui-btn" lay-submit="" lay-filter="new-gift-setting-form-submit" id="submit-form"></button>--> +<!-- <button type="reset" class="layui-btn" id="reset"></button>--> +<!-- </div>--> + </div> +</div> +<style> + .layui-form-label { + width: 120px; + } + + .layui-form-item .layui-input-block { + margin-left: 150px; + } + + .layui-table-form .layui-form-item { + margin-bottom: 20px !important; + } +</style> +<script data-th-inline="javascript" type="text/javascript"> + layui.use(['dropdown', 'jquery', 'validate', 'febs', 'form', 'eleTree', 'xmSelect'], function () { + var $ = layui.jquery, + febs = layui.febs, + form = layui.form, + validate = layui.validate, + obj = [[${obj}]], + $view = $('#new-gift-setting'); + + //(下拉框) + $.get(ctx + 'admin/goods/coupon/tree', function (data) { + for (var k in data) + { + $(".coupon-select-category").append("<option value='" + data[k].couponId + "'>" + data[k].couponName + "</option>"); + } + layui.use('form', function () { + var form = layui.form; + // //如果obj.couponId不为空,则赋值 + // if (null != obj.couponId) { + $("#couponCategarySelect").val(obj.couponId); + // } + form.render(); + }); + }); + + form.verify(validate); + + initNewGiftValue(); + function initNewGiftValue() { + form.val("new-gift-setting-form", { + "state": obj.state, + "prizeScore": obj.prizeScore, + "couponId": obj.couponId, + }); + } + + + form.on('submit(new-gift-setting-form-submit)', function (data) { + console.log(data); + febs.post(ctx + 'admin/score/addNewGiftSetting', data.field, function (res) { + febs.alert.success('设置成功'); + }); + return false; + }); + }); +</script> \ No newline at end of file -- Gitblit v1.9.1