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