Bladeren bron

fixed 微信会员卡券后台设置

fushengqian 1 jaar geleden
bovenliggende
commit
9a02685916

+ 77 - 0
fuint-application/src/main/java/com/fuint/common/dto/WxCardDto.java

@@ -0,0 +1,77 @@
+package com.fuint.common.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 微信会员卡实体类
+ *
+ * Created by FSQ
+ * CopyRight https://www.fuint.cn
+ */
+@Getter
+@Setter
+public class WxCardDto {
+
+    @ApiModelProperty("会员卡类型")
+    private String cardType;
+
+    @ApiModelProperty("会员卡背景图")
+    private String backgroundUrl;
+
+    @ApiModelProperty("商户logo")
+    private String logoUrl;
+
+    @ApiModelProperty("商户名称")
+    private String brandName;
+
+    @ApiModelProperty("Code展示类型")
+    private String codeType;
+
+    @ApiModelProperty("卡券名,字数上限为9个汉字")
+    private String title;
+
+    @ApiModelProperty("会员卡颜色")
+    private String color;
+
+    @ApiModelProperty("卡券使用提醒,字数上限为16个汉字")
+    private String notice;
+
+    @ApiModelProperty("卡券使用说明,字数上限为1024个汉字")
+    private String description;
+
+    @ApiModelProperty("客服电话")
+    private String servicePhone;
+
+    @ApiModelProperty("跳转外链的入口名字")
+    private String customUrlName;
+
+    @ApiModelProperty("跳转外链的URL")
+    private String customUrl;
+
+    @ApiModelProperty("显示在入口右侧的提示语")
+    private String customUrlSubTitle;
+
+    @ApiModelProperty("卡券领取页面是否可分享")
+    private Boolean canShare;
+
+    @ApiModelProperty("会员卡特权说明,限制1024汉字")
+    private String prerogative;
+
+    @ApiModelProperty("显示积分")
+    private Boolean supplyBonus;
+
+    @ApiModelProperty("跳转外链查看积分详情")
+    private String bonusUrl;
+
+    @ApiModelProperty("积分规则")
+    private String bonusRules;
+
+    @ApiModelProperty("是否支持储值")
+    private Boolean supplyBalance;
+
+    @ApiModelProperty("跳转外链查看余额详情")
+    private String balanceUrl;
+
+}

+ 6 - 4
fuint-application/src/main/java/com/fuint/common/enums/UserSettingEnum.java

@@ -9,7 +9,9 @@ package com.fuint.common.enums;
 public enum UserSettingEnum {
     GET_COUPON_NEED_PHONE("getCouponNeedPhone", "领券是否需要手机号码"),
     SUBMIT_ORDER_NEED_PHONE("submitOrderNeedPhone", "提交订单是否需要手机号码"),
-    LOGIN_NEED_PHONE("loginNeedPhone", "登录是否需要手机号");
+    LOGIN_NEED_PHONE("loginNeedPhone", "登录是否需要手机号"),
+    OPEN_WX_CARD("openWxCard", "开通微信会员卡"),
+    WX_MEMBER_CARD("wxMemberCard", "微信会员卡");
 
     private String key;
 
@@ -38,12 +40,12 @@ public enum UserSettingEnum {
 
     // 普通方法,通过key获取value
     public static String getValue(String k) {
-        for (UserSettingEnum c : UserSettingEnum.values()) {
+       for (UserSettingEnum c : UserSettingEnum.values()) {
             if (c.getKey().equals(k)) {
                 return c.getValue();
             }
-        }
-        return null;
+       }
+       return null;
     }
 
     // 普通方法,通过Value获取key

+ 6 - 6
fuint-application/src/main/java/com/fuint/common/service/SettingService.java

@@ -17,8 +17,8 @@ public interface SettingService extends IService<MtSetting> {
     /**
      * 删除配置
      *
-     * @param  merchantId
-     * @param  name
+     * @param  merchantId 商户ID
+     * @param  name 配置名称
      * @throws BusinessCheckException
      */
     void removeSetting(Integer merchantId, String name) throws BusinessCheckException;
@@ -26,10 +26,10 @@ public interface SettingService extends IService<MtSetting> {
     /**
      * 保存配置
      *
-     * @param  reqDto
+     * @param  mtSetting
      * @throws BusinessCheckException
      */
-    MtSetting saveSetting(MtSetting reqDto) throws BusinessCheckException;
+    MtSetting saveSetting(MtSetting mtSetting) throws BusinessCheckException;
 
     /**
      * 获取配置列表
@@ -42,8 +42,8 @@ public interface SettingService extends IService<MtSetting> {
     /**
      * 根据配置名称获取配置信息
      *
-     * @param  merchantId
-     * @param  name name
+     * @param  merchantId 商户ID
+     * @param  name 配置名称
      * @throws BusinessCheckException
      */
     MtSetting querySettingByName(Integer merchantId, String name) throws BusinessCheckException;

+ 1 - 1
fuint-application/src/main/java/com/fuint/common/service/impl/OrderServiceImpl.java

@@ -1360,7 +1360,7 @@ public class OrderServiceImpl extends ServiceImpl<MtOrderMapper, MtOrder> implem
         }
 
         // 处理消费返积分,查询返1积分所需消费金额
-        MtSetting setting = settingService.querySettingByName(mtOrder.getMerchantId(), "pointNeedConsume");
+        MtSetting setting = settingService.querySettingByName(mtOrder.getMerchantId(), PointSettingEnum.POINT_NEED_CONSUME.getKey());
         if (setting != null && !orderInfo.getPayType().equals(PayTypeEnum.BALANCE.getKey()) && orderInfo.getIsVisitor().equals(YesOrNoEnum.NO.getKey())) {
             String needPayAmount = setting.getValue();
             Integer needPayAmountInt = Math.round(Integer.parseInt(needPayAmount));

+ 9 - 9
fuint-application/src/main/java/com/fuint/common/service/impl/SettingServiceImpl.java

@@ -65,27 +65,27 @@ public class SettingServiceImpl extends ServiceImpl<MtSettingMapper, MtSetting>
     @Transactional(rollbackFor = Exception.class)
     @OperationServiceLog(description = "保存配置信息")
     public MtSetting saveSetting(MtSetting mtSetting) {
-        MtSetting info = querySettingByName(mtSetting.getMerchantId(), mtSetting.getName());
-        if (null != info) {
+        MtSetting settingInfo = querySettingByName(mtSetting.getMerchantId(), mtSetting.getName());
+        if (null != settingInfo) {
             if (mtSetting.getValue() != null) {
-                info.setValue(mtSetting.getValue());
+                settingInfo.setValue(mtSetting.getValue());
             }
             if (mtSetting.getDescription() != null) {
-                info.setDescription(mtSetting.getDescription());
+                settingInfo.setDescription(mtSetting.getDescription());
             }
             if (StringUtil.isNotEmpty(mtSetting.getOperator())) {
-                info.setOperator(mtSetting.getOperator());
+                settingInfo.setOperator(mtSetting.getOperator());
             }
             if (mtSetting.getUpdateTime() != null) {
-                info.setUpdateTime(mtSetting.getUpdateTime());
+                settingInfo.setUpdateTime(mtSetting.getUpdateTime());
             }
             if (mtSetting.getStatus() != null) {
-                info.setStatus(mtSetting.getStatus());
+                settingInfo.setStatus(mtSetting.getStatus());
             }
             if (mtSetting.getType() != null) {
-                info.setType(mtSetting.getType());
+                settingInfo.setType(mtSetting.getType());
             }
-            mtSettingMapper.updateById(info);
+            mtSettingMapper.updateById(settingInfo);
         } else {
             // 创建配置
             mtSetting.setCreateTime(new Date());

+ 26 - 20
fuint-application/src/main/java/com/fuint/common/service/impl/WeixinServiceImpl.java

@@ -5,10 +5,12 @@ import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONArray;
 import com.aliyun.oss.OSS;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fuint.common.Constants;
 import com.fuint.common.bean.H5SceneInfo;
 import com.fuint.common.bean.WxPayBean;
 import com.fuint.common.dto.OrderDto;
 import com.fuint.common.dto.UserOrderDto;
+import com.fuint.common.dto.WxCardDto;
 import com.fuint.common.enums.*;
 import com.fuint.common.http.HttpRESTDataClient;
 import com.fuint.common.service.*;
@@ -687,6 +689,12 @@ public class WeixinServiceImpl implements WeixinService {
     public String createWxCard(Integer merchantId) {
         String cardId = "";
         try {
+            MtSetting mtSetting = settingService.querySettingByName(merchantId, UserSettingEnum.WX_MEMBER_CARD.getKey());
+            if (mtSetting == null) {
+                return cardId;
+            }
+            WxCardDto wxCardDto = JsonUtil.parseObject(mtSetting.getValue(), WxCardDto.class);
+
             String accessToken = getAccessToken(merchantId, true);
             String url = "https://api.weixin.qq.com/card/create?access_token=" + accessToken;
 
@@ -694,45 +702,43 @@ public class WeixinServiceImpl implements WeixinService {
             Map<String, Object> card = new HashMap<>();
             card.put("card_type", "MEMBER_CARD");
             Map<String, Object> memberCard = new HashMap<>();
-            memberCard.put("background_pic_url", null);
+            memberCard.put("background_pic_url", wxCardDto.getBackgroundUrl());
 
             // baseInfo
             Map<String, Object> baseInfo = new HashMap<>();
-            baseInfo.put("logo_url", "");
-            baseInfo.put("brand_name", "小隅安");
+            baseInfo.put("logo_url", wxCardDto.getLogoUrl());
+            baseInfo.put("brand_name", wxCardDto.getBrandName());
             baseInfo.put("code_type", "CODE_TYPE_TEXT");
-            baseInfo.put("title", "小隅安会员卡");
-            baseInfo.put("color", "Color010");
-            baseInfo.put("notice", "使用时向服务员出示此券");
-            baseInfo.put("service_phone", "0898-88888888");
-            baseInfo.put("description", "不可与其他优惠同享");
+            baseInfo.put("title", wxCardDto.getTitle());
+            baseInfo.put("color", wxCardDto.getColor());
+            baseInfo.put("notice", wxCardDto.getNotice());
+            baseInfo.put("service_phone", wxCardDto.getServicePhone());
+            baseInfo.put("description", wxCardDto.getDescription());
             Map<String, Object> dateInfo = new HashMap<>();
             dateInfo.put("type", "DATE_TYPE_PERMANENT");
             baseInfo.put("date_info", dateInfo);
             Map<String, Object> sku = new HashMap<>();
-            sku.put("quantity", 50000000);
+            sku.put("quantity", Constants.ALL_ROWS);
             baseInfo.put("sku", sku);
-            baseInfo.put("get_limit", 3);
+            baseInfo.put("get_limit", 1);
             baseInfo.put("use_custom_code", false);
             baseInfo.put("bind_openid", false);
             baseInfo.put("can_give_friend", false);
             baseInfo.put("location_id_list", null);
-            baseInfo.put("custom_url_name", "立即使用");
-            baseInfo.put("custom_url", "https://www.fuint.cn/h5/");
-            baseInfo.put("custom_url_sub_title", "6个汉字tips");
-            baseInfo.put("promotion_url_name", "营销入口");
-            baseInfo.put("promotion_url", "https://www.fuint.cn/h5/");
+            baseInfo.put("custom_url_name", wxCardDto.getCustomUrlName());
+            baseInfo.put("custom_url", wxCardDto.getCustomUrl());
+            baseInfo.put("custom_url_sub_title", wxCardDto.getCustomUrlSubTitle());
             baseInfo.put("need_push_on_view", true);
             memberCard.put("base_info", baseInfo);
 
             // 特权说明
-            memberCard.put("prerogative", "会员卡特权说明,限制1024汉字。");
+            memberCard.put("prerogative", wxCardDto.getPrerogative());
             // 自动激活
             memberCard.put("auto_activate", true);
-            memberCard.put("supply_bonus", true);
-            memberCard.put("bonus_url", "https://www.fuint.cn/h5/");
-            memberCard.put("supply_balance", false);
-            memberCard.put("balance_url", "https://www.fuint.cn/h5/");
+            memberCard.put("supply_bonus", wxCardDto.getSupplyBonus());
+            memberCard.put("bonus_url", wxCardDto.getBonusUrl());
+            memberCard.put("supply_balance", wxCardDto.getSupplyBalance());
+            memberCard.put("balance_url", wxCardDto.getBalanceUrl());
 
             card.put("member_card", memberCard);
             params.put("card", card);

+ 73 - 61
fuint-application/src/main/java/com/fuint/module/backendApi/controller/BackendMemberController.java

@@ -1,10 +1,7 @@
 package com.fuint.module.backendApi.controller;
 
 import com.fuint.common.Constants;
-import com.fuint.common.dto.AccountInfo;
-import com.fuint.common.dto.GroupMemberDto;
-import com.fuint.common.dto.UserDto;
-import com.fuint.common.dto.UserGroupDto;
+import com.fuint.common.dto.*;
 import com.fuint.common.enums.SettingTypeEnum;
 import com.fuint.common.enums.StatusEnum;
 import com.fuint.common.enums.UserSettingEnum;
@@ -25,6 +22,8 @@ import lombok.AllArgsConstructor;
 import org.springframework.beans.BeanUtils;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
+import weixin.popular.util.JsonUtil;
+
 import javax.servlet.http.HttpServletRequest;
 import java.text.ParseException;
 import java.util.*;
@@ -387,25 +386,87 @@ public class BackendMemberController extends BaseController {
         String getCouponNeedPhone = "false";
         String submitOrderNeedPhone = "false";
         String loginNeedPhone = "false";
-
+        String openWxCard = "false";
+        WxCardDto wxMemberCard = null;
         for (MtSetting setting : settingList) {
-             if (setting.getName().equals("getCouponNeedPhone")) {
-                 getCouponNeedPhone = setting.getValue();
-             } else if (setting.getName().equals("submitOrderNeedPhone")) {
-                 submitOrderNeedPhone = setting.getValue();
-             } else if (setting.getName().equals("loginNeedPhone")) {
-                 loginNeedPhone = setting.getValue();
-             }
+            if (StringUtil.isNotEmpty(setting.getValue())) {
+                if (setting.getName().equals(UserSettingEnum.GET_COUPON_NEED_PHONE.getKey())) {
+                    getCouponNeedPhone = setting.getValue();
+                } else if (setting.getName().equals(UserSettingEnum.GET_COUPON_NEED_PHONE.getKey())) {
+                    submitOrderNeedPhone = setting.getValue();
+                } else if (setting.getName().equals(UserSettingEnum.LOGIN_NEED_PHONE.getKey())) {
+                    loginNeedPhone = setting.getValue();
+                } else if (setting.getName().equals(UserSettingEnum.OPEN_WX_CARD.getKey())) {
+                    openWxCard = setting.getValue();
+                } else if (setting.getName().equals(UserSettingEnum.WX_MEMBER_CARD.getKey())) {
+                    wxMemberCard = JsonUtil.parseObject(setting.getValue(), WxCardDto.class);
+                }
+            }
         }
 
         Map<String, Object> result = new HashMap<>();
         result.put("getCouponNeedPhone", getCouponNeedPhone);
         result.put("submitOrderNeedPhone", submitOrderNeedPhone);
         result.put("loginNeedPhone", loginNeedPhone);
+        result.put("openWxCard", openWxCard);
+        result.put("wxMemberCard", wxMemberCard);
 
         return getSuccessResult(result);
     }
 
+    /**
+     * 保存会员设置
+     *
+     * @param request HttpServletRequest对象
+     * @return
+     */
+    @ApiOperation(value = "保存会员设置")
+    @RequestMapping(value = "/saveSetting", method = RequestMethod.POST)
+    @CrossOrigin
+    @PreAuthorize("@pms.hasPermission('member:setting')")
+    public ResponseObject saveSetting(HttpServletRequest request, @RequestBody Map<String, Object> param) throws BusinessCheckException {
+        String token = request.getHeader("Access-Token");
+        String getCouponNeedPhone = param.get("getCouponNeedPhone") != null ? param.get("getCouponNeedPhone").toString() : null;
+        String submitOrderNeedPhone = param.get("submitOrderNeedPhone") != null ? param.get("submitOrderNeedPhone").toString() : null;
+        String loginNeedPhone = param.get("loginNeedPhone") != null ? param.get("loginNeedPhone").toString() : null;
+        String openWxCard = param.get("openWxCard") != null ? param.get("openWxCard").toString() : null;
+        String wxMemberCard = param.get("wxMemberCard") != null ? param.get("wxMemberCard").toString() : null;
+
+        AccountInfo accountInfo = TokenUtil.getAccountInfoByToken(token);
+        if (accountInfo == null) {
+            return getFailureResult(1001, "请先登录");
+        }
+
+        UserSettingEnum[] settingList = UserSettingEnum.values();
+        for (UserSettingEnum setting : settingList) {
+            MtSetting mtSetting = new MtSetting();
+            mtSetting.setType(SettingTypeEnum.USER.getKey());
+            mtSetting.setName(setting.getKey());
+
+            if (setting.getKey().equals(UserSettingEnum.GET_COUPON_NEED_PHONE.getKey())) {
+                mtSetting.setValue(getCouponNeedPhone);
+            } else if (setting.getKey().equals(UserSettingEnum.SUBMIT_ORDER_NEED_PHONE.getKey())) {
+                mtSetting.setValue(submitOrderNeedPhone);
+            } else if (setting.getKey().equals(UserSettingEnum.LOGIN_NEED_PHONE.getKey())) {
+                mtSetting.setValue(loginNeedPhone);
+            } else if (setting.getKey().equals(UserSettingEnum.OPEN_WX_CARD.getKey())) {
+                mtSetting.setValue(openWxCard);
+            } else if (setting.getKey().equals(UserSettingEnum.WX_MEMBER_CARD.getKey())) {
+                mtSetting.setValue(wxMemberCard);
+            }
+
+            mtSetting.setDescription(setting.getValue());
+            mtSetting.setOperator(accountInfo.getAccountName());
+            mtSetting.setUpdateTime(new Date());
+            mtSetting.setMerchantId(accountInfo.getMerchantId());
+            mtSetting.setStoreId(0);
+
+            settingService.saveSetting(mtSetting);
+        }
+
+        return getSuccessResult(true);
+    }
+
     /**
      * 重置会员密码
      *
@@ -446,55 +507,6 @@ public class BackendMemberController extends BaseController {
         return getSuccessResult(true);
     }
 
-    /**
-     * 保存设置
-     *
-     * @param request HttpServletRequest对象
-     * @return
-     */
-    @ApiOperation(value = "保存设置")
-    @RequestMapping(value = "/saveSetting", method = RequestMethod.POST)
-    @CrossOrigin
-    @PreAuthorize("@pms.hasPermission('member:setting')")
-    public ResponseObject saveSetting(HttpServletRequest request, @RequestBody Map<String, Object> param) throws BusinessCheckException {
-        String token = request.getHeader("Access-Token");
-        String getCouponNeedPhone = param.get("getCouponNeedPhone") != null ? param.get("getCouponNeedPhone").toString() : "false";
-        String submitOrderNeedPhone = param.get("submitOrderNeedPhone") != null ? param.get("submitOrderNeedPhone").toString() : "false";
-        String loginNeedPhone = param.get("loginNeedPhone") != null ? param.get("loginNeedPhone").toString() : "false";
-
-        AccountInfo accountInfo = TokenUtil.getAccountInfoByToken(token);
-        if (accountInfo == null) {
-            return getFailureResult(1001, "请先登录");
-        }
-
-        String operator = accountInfo.getAccountName();
-
-        UserSettingEnum[] settingList = UserSettingEnum.values();
-        for (UserSettingEnum setting : settingList) {
-            MtSetting info = new MtSetting();
-            info.setType(SettingTypeEnum.USER.getKey());
-            info.setName(setting.getKey());
-
-            if (setting.getKey().equals("getCouponNeedPhone")) {
-                info.setValue(getCouponNeedPhone);
-            } else if (setting.getKey().equals("submitOrderNeedPhone")) {
-                info.setValue(submitOrderNeedPhone);
-            } else if (setting.getKey().equals("loginNeedPhone")) {
-                info.setValue(loginNeedPhone);
-            }
-
-            info.setDescription(setting.getValue());
-            info.setOperator(operator);
-            info.setUpdateTime(new Date());
-            info.setMerchantId(accountInfo.getMerchantId());
-            info.setStoreId(0);
-
-            settingService.saveSetting(info);
-        }
-
-        return getSuccessResult(true);
-    }
-
     /**
      * 获取会员分组
      *