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