he2802 2 лет назад
Родитель
Сommit
79080c57d7

+ 1 - 1
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/financial/TopDivideLogController.java

@@ -93,7 +93,7 @@ public class TopDivideLogController extends BaseController {
         return getDataTable(list);
     }
 
-    @ApiOperation("通过坏账配置详情")
+    @ApiOperation("获取坏账配置详情")
     @GetMapping(value = "/configKey/badBill")
     public AjaxResult getBadBill()
     {

+ 17 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/mall/TopStoreController.java

@@ -3,15 +3,18 @@ package com.zhongzheng.controller.mall;
 import java.util.List;
 import java.util.Arrays;
 
+import com.zhongzheng.modules.system.bo.SysTenantBadBillConfigBo;
 import com.zhongzheng.modules.top.mall.bo.TopStoreAddBo;
 import com.zhongzheng.modules.top.mall.bo.TopStoreEditBo;
 import com.zhongzheng.modules.top.mall.bo.TopStoreQueryBo;
 import com.zhongzheng.modules.top.mall.service.ITopStoreService;
 import com.zhongzheng.modules.top.mall.vo.TopStoreExportVo;
 import com.zhongzheng.modules.top.mall.vo.TopStoreVo;
+import com.zhongzheng.modules.top.user.vo.TopSysPointsRuleVo;
 import lombok.RequiredArgsConstructor;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PutMapping;
@@ -122,4 +125,18 @@ public class TopStoreController extends BaseController {
         ExcelUtil<TopStoreExportVo> util = new ExcelUtil<TopStoreExportVo>(TopStoreExportVo.class);
         return util.exportExcel(list, "合作商户列表");
     }
+
+    @ApiOperation("获取积分规则配置详情")
+    @GetMapping(value = "/configKey/pointsRule")
+    public AjaxResult getBadBill()
+    {
+        return AjaxResult.success("配置内容",iTopStoreService.getPointsRuleConfig());
+    }
+
+    @ApiOperation("修改积分规则配置")
+    @PostMapping("/updatePointsRule")
+    public AjaxResult editBadBill(@Validated @RequestBody TopSysPointsRuleVo bo)
+    {
+        return toAjax(iTopStoreService.updatePointsRuleConfig(bo));
+    }
 }

+ 20 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/user/UserController.java

@@ -8,10 +8,13 @@ import com.zhongzheng.common.core.page.TableDataInfo;
 import com.zhongzheng.common.enums.BusinessType;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.common.utils.poi.ExcelUtil;
 import com.zhongzheng.framework.web.service.WxLoginService;
 import com.zhongzheng.framework.web.service.WxTokenService;
+import com.zhongzheng.modules.top.goods.bo.TopOldOrderQueryBo;
 import com.zhongzheng.modules.top.mall.bo.TopStoreQueryBo;
 import com.zhongzheng.modules.top.mall.vo.TopStoreVo;
+import com.zhongzheng.modules.top.order.vo.TopOldOrderExportVo;
 import com.zhongzheng.modules.user.bo.*;
 import com.zhongzheng.modules.user.domain.User;
 import com.zhongzheng.modules.user.domain.UserWxFollow;
@@ -19,6 +22,7 @@ import com.zhongzheng.modules.user.entity.ClientLoginUser;
 import com.zhongzheng.modules.user.service.IUserService;
 import com.zhongzheng.modules.user.service.IUserVisitLogService;
 import com.zhongzheng.modules.user.service.IUserWxFollowService;
+import com.zhongzheng.modules.user.vo.UserVipExportVo;
 import com.zhongzheng.modules.user.vo.UserVo;
 import com.zhongzheng.modules.wx.bo.WxLoginBody;
 import io.swagger.annotations.Api;
@@ -87,4 +91,20 @@ public class UserController extends BaseController {
     public AjaxResult<Void> restoreBatchVip(@RequestBody UserEditBo bo){
         return toAjax(iUserService.restoreBatchVip(bo) ? 1 : 0);
     }
+
+    @ApiOperation("会员用户列表导出")
+    @PreAuthorize("@ss.hasPermi('system:tp:list')")
+    @GetMapping("/listExport")
+    public AjaxResult<List<UserVipExportVo>> listExport(UserQueryBo bo) {
+        List<UserVipExportVo> list = iUserService.vipUserListExport(bo);
+        ExcelUtil<UserVipExportVo> util = new ExcelUtil<UserVipExportVo>(UserVipExportVo.class);
+        return util.exportExcel(list, "会员用户列表");
+    }
+
+    @ApiOperation("批量会员充值")
+    @Log(title = "批量会员充值", businessType = BusinessType.UPDATE)
+    @PostMapping("/rechargeBatchVip")
+    public AjaxResult<Void> rechargeBatchVip(@RequestBody UserEditBo bo){
+        return toAjax(iUserService.rechargeBatchVip(bo) ? 1 : 0);
+    }
 }

+ 62 - 1
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/UserServiceImpl.java

@@ -37,6 +37,7 @@ import com.zhongzheng.modules.grade.service.IClassGradeUserService;
 import com.zhongzheng.modules.grade.vo.ClassGradeUserGoodsVo;
 import com.zhongzheng.modules.system.service.ISysConfigService;
 import com.zhongzheng.modules.top.mall.domain.TopStore;
+import com.zhongzheng.modules.top.order.vo.TopOldOrderExportVo;
 import com.zhongzheng.modules.user.bo.*;
 import com.zhongzheng.modules.user.domain.*;
 import com.zhongzheng.modules.user.entity.ClientLoginUser;
@@ -1065,7 +1066,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
     public Boolean closeBatchVip(UserEditBo bo) {
         for(Long userId : bo.getUserIdList()){
             User user = getOne(new LambdaQueryWrapper<User>().eq(User::getUserId, userId));
-            if(Validator.isNotEmpty(user)&&(user.getVipTag()!=1||user.getVipTag()!=3)){
+            if(Validator.isNotEmpty(user)&&(user.getVipTag()!=1&&user.getVipTag()!=3)){
                 throw new CustomException("该会员未开通会员");
             }
             LambdaUpdateWrapper<User> objectLambdaUpdateWrapper = Wrappers.lambdaUpdate();
@@ -1094,6 +1095,66 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
         return true;
     }
 
+    @Override
+    public List<UserVipExportVo> vipUserListExport(UserQueryBo bo) {
+        List<UserVipExportVo> exportVoList = new ArrayList<>();
+        List<UserVo> list = baseMapper.vipUserList(bo);
+        for(UserVo vo : list){
+            UserVipExportVo exportVo = BeanUtil.toBean(vo, UserVipExportVo.class);
+            if(vo.getVipTag()==1){
+                exportVo.setVipTag("已开通");
+            }
+            else if(vo.getVipTag()==0){
+                exportVo.setVipTag("未开通");
+            }
+            else if(vo.getVipTag()==2){
+                exportVo.setVipTag("已注销");
+            }
+            else if(vo.getVipTag()==3){
+                exportVo.setVipTag("审核中");
+            }
+
+            if(vo.getVipFrom()==1){
+                exportVo.setVipFrom("云学堂PC");
+            }
+            else if(vo.getVipFrom()==2){
+                exportVo.setVipFrom("云学堂h5");
+            }
+            else if(vo.getVipFrom()==3){
+                exportVo.setVipFrom("云学堂小程序");
+            }
+            else if(vo.getVipFrom()==4){
+                exportVo.setVipFrom("e管证");
+            }
+            else if(vo.getVipFrom()==5){
+                exportVo.setVipFrom("教育智慧管理系统");
+            }
+            else if(vo.getVipFrom()==6){
+                exportVo.setVipFrom("中正总平台");
+            }
+            exportVo.setVipOpenTime(DateUtils.timestampToDate(vo.getVipOpenTime()));
+            exportVo.setVipCloseTime(DateUtils.timestampToDate(vo.getVipCloseTime()));
+            exportVoList.add(exportVo);
+        }
+        return exportVoList;
+    }
+
+    @Override
+    public Boolean rechargeBatchVip(UserEditBo bo) {
+        for(Long userId : bo.getUserIdList()){
+            User user = getOne(new LambdaQueryWrapper<User>().eq(User::getUserId, userId));
+            if(Validator.isNotEmpty(user)&&(user.getVipTag()!=1&&user.getVipTag()!=3)){
+                throw new CustomException("该会员未开通会员");
+            }
+            LambdaUpdateWrapper<User> objectLambdaUpdateWrapper = Wrappers.lambdaUpdate();
+            objectLambdaUpdateWrapper.eq(User::getUserId, userId);
+            objectLambdaUpdateWrapper.set(User::getRechargeMoney, user.getRechargeMoney().add(bo.getRechargeCardMoney()));
+            objectLambdaUpdateWrapper.set(User::getUpdateTime, DateUtils.getNowTime());
+            this.update(null, objectLambdaUpdateWrapper);
+        }
+        return true;
+    }
+
     private Long findSubjectId(String subject){
         if(subject!=null){
             String key = "SUB_"+subject;

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/mall/service/ITopStoreService.java

@@ -2,12 +2,14 @@ package com.zhongzheng.modules.top.mall.service;
 
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.system.bo.SysTenantBadBillConfigBo;
 import com.zhongzheng.modules.top.mall.bo.TopStoreAddBo;
 import com.zhongzheng.modules.top.mall.bo.TopStoreEditBo;
 import com.zhongzheng.modules.top.mall.bo.TopStoreQueryBo;
 import com.zhongzheng.modules.top.mall.domain.TopStore;
 import com.zhongzheng.modules.top.mall.vo.TopStoreExportVo;
 import com.zhongzheng.modules.top.mall.vo.TopStoreVo;
+import com.zhongzheng.modules.top.user.vo.TopSysPointsRuleVo;
 
 import java.util.Collection;
 import java.util.List;
@@ -61,4 +63,8 @@ public interface ITopStoreService extends IService<TopStore> {
 
 	Boolean batchRemove(TopStoreEditBo bo);
 
+	TopSysPointsRuleVo getPointsRuleConfig();
+
+	boolean updatePointsRuleConfig(TopSysPointsRuleVo bo);
+
 }

+ 22 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/mall/service/impl/TopStoreServiceImpl.java

@@ -3,6 +3,7 @@ package com.zhongzheng.modules.top.mall.service.impl;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
@@ -19,6 +20,10 @@ import com.zhongzheng.modules.top.mall.vo.TopStoreExportVo;
 import com.zhongzheng.modules.top.mall.vo.TopStoreVo;
 import com.zhongzheng.modules.top.order.domain.TopOrderRecNote;
 import com.zhongzheng.modules.top.order.vo.TopOldOrderCompanyExportVo;
+import com.zhongzheng.modules.top.user.domain.TopSysConfig;
+import com.zhongzheng.modules.top.user.service.ITopSysConfigService;
+import com.zhongzheng.modules.top.user.vo.TopSysPointsRuleVo;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -40,6 +45,9 @@ import java.util.stream.Collectors;
 @Service
 public class TopStoreServiceImpl extends ServiceImpl<TopStoreMapper, TopStore> implements ITopStoreService {
 
+    @Autowired
+    private ITopSysConfigService topConfigService;
+
     @Override
     public TopStoreVo queryById(Long storeId){
         TopStore db = this.baseMapper.selectById(storeId);
@@ -204,4 +212,18 @@ public class TopStoreServiceImpl extends ServiceImpl<TopStoreMapper, TopStore> i
         }
         return true;
     }
+
+    @Override
+    public TopSysPointsRuleVo getPointsRuleConfig() {
+        String json = topConfigService.selectConfigByKeyNoCache("points_rule");
+        return JSON.parseObject(json,TopSysPointsRuleVo.class);
+    }
+
+    @Override
+    public boolean updatePointsRuleConfig(TopSysPointsRuleVo bo) {
+        LambdaUpdateWrapper<TopSysConfig> objectLambdaUpdateWrapper = Wrappers.lambdaUpdate();
+        objectLambdaUpdateWrapper.eq(TopSysConfig::getConfigKey, "points_rule");
+        objectLambdaUpdateWrapper.set(TopSysConfig::getConfigValue, JSON.toJSONString(bo));
+        return topConfigService.update(null, objectLambdaUpdateWrapper);
+    }
 }

+ 51 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/user/vo/TopSysPointsRuleVo.java

@@ -0,0 +1,51 @@
+package com.zhongzheng.modules.top.user.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+
+@Data
+@ApiModel("积分兑换规则")
+public class TopSysPointsRuleVo implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+    /** 用户ID */
+
+    @ApiModelProperty("一个自然年自动清零开启状态")
+    private Boolean yearOverEnable;
+    /** 角色ID */
+
+    @ApiModelProperty("一元兑换多少积分")
+    private Integer oneExchangeValue;
+
+    @ApiModelProperty("一元兑换多少积分开启状态")
+    private Boolean oneExchangeEnable;
+
+    @ApiModelProperty("下单满送开启状态")
+    private Boolean fullEnable;
+
+    @ApiModelProperty("下单满金额值")
+    private BigDecimal fullMoneyValue;
+
+    @ApiModelProperty("下单满送积分值")
+    private BigDecimal fullPointsValue;
+
+    @ApiModelProperty("e管证证书上传开启状态")
+    private Boolean uploadCarteEnable;
+
+    @ApiModelProperty("e管证证书上传送积分值")
+    private BigDecimal uploadCarteValue;
+
+    @ApiModelProperty("分享商品送积分开启状态")
+    private Boolean shareGoodsEnable;
+
+    @ApiModelProperty("分享商品送积分值")
+    private BigDecimal shareGoodsValue;
+}

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserEditBo.java

@@ -232,4 +232,6 @@ public class UserEditBo {
     @ApiModelProperty("会员来源 1云学堂PC 2云学堂h5 3云学堂小程序 4e管证 5教育智慧管理系统 6中正总平台")
     private Integer vipFrom;
     private List<Long> userIdList;
+    @ApiModelProperty("会员充值金额")
+    private BigDecimal rechargeCardMoney;
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserService.java

@@ -136,4 +136,6 @@ public interface IUserService extends IService<User> {
 	Boolean restoreBatchVip(UserEditBo bo);
 
 	List<UserVipExportVo> vipUserListExport(UserQueryBo bo);
+
+	Boolean rechargeBatchVip(UserEditBo bo);
 }

+ 25 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserVipExportVo.java

@@ -1,6 +1,6 @@
 package com.zhongzheng.modules.user.vo;
 
-import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.zhongzheng.common.annotation.Excel;
 import com.zhongzheng.modules.grade.vo.ClassGradeUserGoodsVo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -18,7 +18,6 @@ import java.util.List;
  */
 @Data
 @ApiModel("用户视图对象")
-//@TableName(autoResultMap = true)
 public class UserVipExportVo {
 	private static final long serialVersionUID = 1L;
 
@@ -48,4 +47,28 @@ public class UserVipExportVo {
 	@Excel(name = "身份证号")
 	@ApiModelProperty("身份证号")
 	private String idCard;
+
+	@ApiModelProperty("手机号码")
+	private String telphone;
+
+	@Excel(name = "当前积分")
+	@ApiModelProperty("积分")
+	private BigDecimal pointsValue;
+
+	@Excel(name = "累计充值")
+	@ApiModelProperty("积分商城累计充值金额")
+	private BigDecimal rechargeMoney;
+
+	/** 积分商城累计退款金额 */
+	@Excel(name = "累计退款")
+	@ApiModelProperty("积分商城累计退款金额")
+	private BigDecimal refundMoney;
+
+	@Excel(name = "开通时间")
+	@ApiModelProperty("会员卡开通时间")
+	private String vipOpenTime;
+
+	@Excel(name = "注销时间")
+	@ApiModelProperty("会员卡注销时间")
+	private String vipCloseTime;
 }