瀏覽代碼

fengji 1, 添加兑换码, 2. 修改操作手册

yanite 3 年之前
父節點
當前提交
57dd194f3f

+ 21 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/RedemptionCodeDao.java

@@ -0,0 +1,21 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ym.mec.biz.dal.entity.AppRedemptionCode;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 兑换码分配表(RedemptionCode)表数据库访问层
+ *
+ * @author makejava
+ * @since 2021-12-27 14:27:57
+ */
+public interface RedemptionCodeDao extends BaseMapper<AppRedemptionCode> {
+
+   int insertBatch(@Param("entities") List<AppRedemptionCode> entities);
+
+    AppRedemptionCode findFirstNull();
+}
+

+ 110 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/AppRedemptionCode.java

@@ -0,0 +1,110 @@
+package com.ym.mec.biz.dal.entity;
+
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.TableId;
+
+import java.io.Serializable;
+
+/**
+ * 兑换码分配表(RedemptionCode)表实体类
+ *
+ * @author makejava
+ * @since 2021-12-27 14:27:57
+ */
+@ApiModel(value = "redemption_code-兑换码分配表")
+public class AppRedemptionCode implements Serializable {
+    @TableId(value = "id_", type = IdType.AUTO)
+    @ApiModelProperty(value = "${column.comment}")
+    private Integer id;
+
+    @TableField("url_")
+    @ApiModelProperty(value = "兑换url")
+    private String url;
+
+    @TableField("code_")
+    @ApiModelProperty(value = "兑换码")
+    private String code;
+
+    @TableField("user_id_")
+    @ApiModelProperty(value = "分配用户")
+    private Integer userId;
+
+    @TableField("import_time_")
+    @ApiModelProperty(value = "导入时间")
+    private Date importTime;
+
+    @TableField("update_time_")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+
+    @TableField("status_")
+    @ApiModelProperty(value = "状态 1-已导入未分配 2-预分配 3-已分配")
+    private String status;
+
+    private static final long serialVersionUID = 1L;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public Date getImportTime() {
+        return importTime;
+    }
+
+    public void setImportTime(Date importTime) {
+        this.importTime = importTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+
+}
+

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/TemplateTypeEnum.java

@@ -5,7 +5,8 @@ import com.ym.mec.common.enums.BaseEnum;
 public enum TemplateTypeEnum implements BaseEnum<String, TemplateTypeEnum> {
     GOODS("GOODS","商品导入模板"),
     ROUTE_ORDER("ROUTE_ORDER","财务管理导入模板"),
-    FINANCIAL_EXPENDITURE("FINANCIAL_EXPENDITURE","财务支出导入模板");
+    FINANCIAL_EXPENDITURE("FINANCIAL_EXPENDITURE","财务支出导入模板"),
+    REDEMPTIONCODE("REDEMPTION_CODE", "兑换码分配模板表");
 
     private String code;
 

+ 21 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/AppRedemptionCodeService.java

@@ -0,0 +1,21 @@
+package com.ym.mec.biz.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ym.mec.biz.dal.entity.AppRedemptionCode;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+/**
+ * 兑换码分配表(RedemptionCode)表服务接口
+ *
+ * @author makejava
+ * @since 2021-12-27 14:27:57
+ */
+public interface AppRedemptionCodeService extends IService<AppRedemptionCode> {
+
+    List<AppRedemptionCode> importRedemptionCode(MultipartFile file) throws Exception;
+
+    AppRedemptionCode allocation(Integer userId);
+}
+

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysManualService.java

@@ -2,6 +2,8 @@ package com.ym.mec.biz.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ym.mec.biz.dal.entity.SysManual;
+import com.ym.mec.biz.dal.page.SysManualQueryInfo;
+import com.ym.mec.common.page.PageInfo;
 
 /**
  * (SysManual)表服务接口
@@ -10,5 +12,11 @@ import com.ym.mec.biz.dal.entity.SysManual;
  * @since 2021-12-20 13:46:08
  */
 public interface SysManualService extends IService<SysManual> {
+
+    PageInfo<SysManual> query(SysManualQueryInfo queryInfo);
+
+    Boolean add(SysManual sysManual, Integer userId);
+
+    Boolean update(SysManual sysManual, Integer userId);
 }
 

+ 93 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/AppRedemptionCodeServiceImpl.java

@@ -0,0 +1,93 @@
+package com.ym.mec.biz.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.biz.dal.dao.RedemptionCodeDao;
+import com.ym.mec.biz.dal.entity.AppRedemptionCode;
+import com.ym.mec.biz.dal.enums.*;
+import com.ym.mec.biz.service.AppRedemptionCodeService;
+import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.page.WrapperUtil;
+import com.ym.mec.util.excel.POIUtil;
+import com.ym.mec.util.ini.IniFileUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.stereotype.Service;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.util.*;
+
+/**
+ * 兑换码分配表(RedemptionCode)表服务实现类
+ *
+ * @author makejava
+ * @since 2021-12-27 14:27:57
+ */
+@Service("redemptionCodeService")
+public class AppRedemptionCodeServiceImpl extends ServiceImpl<RedemptionCodeDao, AppRedemptionCode> implements AppRedemptionCodeService {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(AppRedemptionCodeServiceImpl.class);
+
+    @Autowired
+    private RedemptionCodeDao redemptionCodeDao;
+
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    private final static Logger logger = LoggerFactory.getLogger(AppRedemptionCodeServiceImpl.class);
+
+    @Override
+    public List<AppRedemptionCode> importRedemptionCode(MultipartFile file) throws Exception {
+        Map<String, List<Map<String, Object>>> sheetsListMap = POIUtil.importExcel(new ByteArrayInputStream(file.getBytes()), 2, file.getOriginalFilename());
+        
+        InputStream inputStream = new ClassPathResource("columnMapper.ini").getInputStream();
+        Map<String,String> columns = IniFileUtil.readIniFile(inputStream, TemplateTypeEnum.REDEMPTIONCODE.getMsg());
+
+        List<AppRedemptionCode> redemptionCodesList = new ArrayList<>();
+        for (String e : sheetsListMap.keySet()) {
+            List<Map<String, Object>> sheet = sheetsListMap.get(e);
+            for (Map<String, Object> row : sheet) {
+                if (row.size() == 0) {
+                    continue;
+                }
+
+                JSONObject objectMap = new JSONObject();
+                for (String s : row.keySet()) {
+                    if(!columns.containsKey(s)){
+                        continue;
+                    }
+                    String columnValue = columns.get(s);
+                    if(null == row.get(s) || StringUtils.isBlank(row.get(s).toString())){
+                        LOGGER.error("导入异常:参数{}不可为空 param:{}",columnValue,objectMap);
+                        continue ;
+                    }
+                    objectMap.put(columnValue, row.get(s));
+                }
+                try {
+                    AppRedemptionCode redemptionCode = JSONObject.parseObject(objectMap.toJSONString(),AppRedemptionCode.class);
+                    redemptionCodesList.add(redemptionCode);
+                    redemptionCodeDao.insert(redemptionCode);
+                } catch (Exception ex) {
+                    throw new BizException("导入数据出错", ex);
+                }
+            }
+        }
+        return redemptionCodesList;
+    }
+
+    @Override
+    public AppRedemptionCode allocation(Integer userId) {
+        AppRedemptionCode redemptionCode = redemptionCodeDao.findFirstNull();
+        redemptionCode.setUserId(userId);
+        redemptionCodeDao.update(redemptionCode, new WrapperUtil<AppRedemptionCode>().queryWrapper());
+        return redemptionCode;
+    }
+}
+

+ 31 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysManualServiceImpl.java

@@ -1,14 +1,23 @@
 package com.ym.mec.biz.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ym.mec.biz.dal.dao.SysManualDao;
 import com.ym.mec.biz.dal.entity.SysManual;
+import com.ym.mec.biz.dal.page.SysManualQueryInfo;
 import com.ym.mec.biz.service.SysManualService;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.PageUtil;
+import com.ym.mec.common.page.WrapperUtil;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.Date;
+
 /**
  * (SysManual)表服务实现类
  *
@@ -19,5 +28,27 @@ import org.slf4j.LoggerFactory;
 public class SysManualServiceImpl extends ServiceImpl<SysManualDao, SysManual> implements SysManualService {
 
     private final static Logger logger = LoggerFactory.getLogger(SysManualServiceImpl.class);
+
+    public PageInfo<SysManual> query(SysManualQueryInfo queryInfo) {
+        QueryWrapper<SysManual> queryWrapper = new WrapperUtil<SysManual>().hasEq("menu_id_", queryInfo.getMenuId()).queryWrapper();
+        Page<SysManual> pageInfo = PageUtil.getPage(queryInfo.getPage(), queryInfo.getRows());
+
+        return PageUtil.pageInfo(this.page(pageInfo, queryWrapper));
+    }
+
+    public Boolean add(SysManual sysManual, Integer userId) {
+        logger.info("sysManual save");
+        sysManual.setOperatorId(userId);
+        sysManual.setCreateTime(new Date());
+        sysManual.setUpdateTime(new Date());
+        return this.save(sysManual);
+    }
+
+    public Boolean update(SysManual sysManual, Integer userId) {
+        logger.info("sysManual save");
+        sysManual.setOperatorId(userId);
+        sysManual.setUpdateTime(new Date());
+        return this.save(sysManual);
+    }
 }
 

+ 33 - 0
mec-biz/src/main/resources/config/mybatis/RedemptionCodeMapper.xml

@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ym.mec.biz.dal.dao.RedemptionCodeDao">
+  <resultMap id="BaseResultMap" type="com.ym.mec.biz.dal.entity.AppRedemptionCode">
+                       <id column="id_" jdbcType="INTEGER" property="id"/>
+                                  <result column="url_" jdbcType="VARCHAR" property="url"/>
+                                  <result column="code_" jdbcType="VARCHAR" property="code"/>
+                                  <result column="user_id_" jdbcType="INTEGER" property="userId"/>
+                                  <result column="import_time_" jdbcType="TIMESTAMP" property="importTime"/>
+                                  <result column="update_time_" jdbcType="TIMESTAMP" property="updateTime"/>
+                                  <result column="status_" jdbcType="VARCHAR" property="status"/>
+                </resultMap>
+  
+  <sql id="Base_Column_List">    
+                                        id_, url_, code_, user_id_, import_time_, update_time_, status_
+  </sql>
+  
+   <insert id="insertBatch" keyColumn="id_" keyProperty="id" useGeneratedKeys="true"
+            parameterType="com.ym.mec.biz.dal.entity.AppRedemptionCode">
+       insert into app_redemption_code(url_, code_, user_id_, import_time_, update_time_, status_)
+       values
+       <foreach collection="entities" item="entity" separator=",">
+       (#{entity.url}, #{entity.code}, #{entity.userId}, #{entity.importTime}, #{entity.updateTime}, #{entity.status})
+       </foreach>
+   </insert>
+
+    <select id="findFirstNull" resultType="com.ym.mec.biz.dal.entity.AppRedemptionCode">
+        select * from app_redemption_code rc where rc.user_id_ is null
+        order by rc.import_time_ desc
+        limit 1 for update;
+    </select>
+
+</mapper>

+ 0 - 16
mec-biz/src/main/resources/rebel.xml

@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-  This is the JRebel configuration file. It maps the running application to your IDE workspace, enabling JRebel reloading for this project.
-  Refer to https://manuals.jrebel.com/jrebel/standalone/config.html for more information.
--->
-<application generated-by="intellij" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.zeroturnaround.com" xsi:schemaLocation="http://www.zeroturnaround.com http://update.zeroturnaround.com/jrebel/rebel-2_3.xsd">
-
-	<id>mec-biz</id>
-
-	<classpath>
-		<dir name="E:/hgw/DYYM/项目/mec/mec-biz/target/classes">
-		</dir>
-	</classpath>
-
-</application>

+ 5 - 0
mec-client-api/src/main/java/com/ym/mec/task/TaskRemoteService.java

@@ -229,4 +229,9 @@ public interface TaskRemoteService {
      */
 	@GetMapping("task/checkTenantOrder")
     void checkTenantOrder();
+
+
+	/** 兑换码分配数量底告警 */
+	@GetMapping("task/redemptionCodeWarn")
+	void redemptionCodeWarn();
 }

+ 5 - 0
mec-client-api/src/main/java/com/ym/mec/task/fallback/TaskRemoteServiceFallback.java

@@ -282,4 +282,9 @@ public class TaskRemoteServiceFallback implements TaskRemoteService {
     public void checkTenantOrder() {
         logger.error("校验机构付款记录支付状态失败");
     }
+
+	@Override
+	public void redemptionCodeWarn() {
+		logger.error("兑换码分配数量底告警");
+	}
 }

+ 23 - 0
mec-task/src/main/java/com/ym/mec/task/jobs/RedemptionCodeWarnTask.java

@@ -0,0 +1,23 @@
+package com.ym.mec.task.jobs;
+
+import com.ym.mec.task.TaskRemoteService;
+import com.ym.mec.task.core.BaseTask;
+import com.ym.mec.task.core.TaskException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @Author Joburgess
+ * @Date 2020/2/29
+ */
+@Service
+public class RedemptionCodeWarnTask extends BaseTask {
+
+    @Autowired
+    private TaskRemoteService taskRemoteService;
+
+    @Override
+    public void execute() throws TaskException {
+        taskRemoteService.redemptionCodeWarn();
+    }
+}

+ 45 - 0
mec-web/src/main/java/com/ym/mec/web/controller/AppRedemptionCodeController.java

@@ -0,0 +1,45 @@
+package com.ym.mec.web.controller;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.AppRedemptionCode;
+import com.ym.mec.biz.service.AppRedemptionCodeService;
+import com.ym.mec.common.entity.HttpResponseResult;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import com.ym.mec.common.controller.BaseController;
+
+import javax.annotation.Resource;
+
+/**
+ * 兑换码分配表(RedemptionCode)表控制层
+ *
+ * @author makejava
+ * @since 2021-12-27 14:27:56
+ */
+@RestController
+@RequestMapping("/appRedemptionCode")
+public class AppRedemptionCodeController extends BaseController {
+    /**
+     * 服务对象
+     */
+    @Resource
+    private AppRedemptionCodeService appRedemptionCodeService;
+
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @ApiOperation(value = "分配url")
+    @PostMapping(value = "allocation")
+    @PreAuthorize("@pcs.hasPermissions('appRedemptionCode/allocation')")
+    public HttpResponseResult<AppRedemptionCode> allocation(@RequestParam("userId")Integer userId) throws Exception {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        return succeed(appRedemptionCodeService.allocation(userId));
+    }
+}
+

+ 17 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ImportController.java

@@ -4,10 +4,12 @@ import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.FinancialExpenditure;
 import com.ym.mec.biz.dal.entity.Goods;
+import com.ym.mec.biz.dal.entity.AppRedemptionCode;
 import com.ym.mec.biz.dal.entity.StudentPaymentRouteOrder;
 import com.ym.mec.biz.dal.enums.TemplateTypeEnum;
 import com.ym.mec.biz.service.FinancialExpenditureService;
 import com.ym.mec.biz.service.GoodsService;
+import com.ym.mec.biz.service.AppRedemptionCodeService;
 import com.ym.mec.biz.service.StudentPaymentRouteOrderService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
@@ -41,6 +43,9 @@ public class ImportController extends BaseController {
     private SysUserFeignService sysUserFeignService;
     @Autowired
     private StudentPaymentRouteOrderService studentPaymentRouteOrderService;
+    @Autowired
+    private AppRedemptionCodeService appRedemptionCodeService;
+
 
     @ApiOperation(value = "导入商品")
     @PostMapping(value = "goods")
@@ -60,6 +65,18 @@ public class ImportController extends BaseController {
         return succeed(financialExpenditureService.importFinancialExpenditure(file));
     }
 
+    @ApiOperation(value = "导入兑换码分配模板")
+    @PostMapping(value = "importRedemptionCode")
+    @PreAuthorize("@pcs.hasPermissions('import/importRedemptionCode')")
+    public HttpResponseResult<List<AppRedemptionCode>> importRedemptionCode(@RequestParam("file") MultipartFile file) throws Exception {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        List<AppRedemptionCode> ret = appRedemptionCodeService.importRedemptionCode(file);
+        return succeed(ret);
+    }
+
     @ApiOperation(value = "导入财务管理订单")
     @PostMapping(value = "routeOrder")
     @PreAuthorize("@pcs.hasPermissions('import/routeOrder')")

+ 15 - 10
mec-web/src/main/java/com/ym/mec/web/controller/SysManualController.java

@@ -3,6 +3,8 @@ package com.ym.mec.web.controller;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.SysManual;
 import com.ym.mec.biz.dal.entity.TenantOrderRecord;
 import com.ym.mec.biz.dal.page.SysManualQueryInfo;
@@ -32,24 +34,24 @@ public class SysManualController extends BaseController {
      */
     @Autowired
     private SysManualService sysManualService;
-
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
 
     @ApiOperation(value = "查询操作手册")
     @RequestMapping("/list")
     public Object list(SysManualQueryInfo queryInfo) {
-
-        QueryWrapper<SysManual> queryWrapper = new WrapperUtil<SysManual>().hasEq("menu_id_", queryInfo.getMenuId()).queryWrapper();
-        Page<SysManual> pageInfo = PageUtil.getPage(queryInfo.getPage(), queryInfo.getRows());
-
-        return PageUtil.pageInfo(sysManualService.page(pageInfo, queryWrapper));
+        return sysManualService.query(queryInfo);
     }
 
     @ApiOperation(value = "新增帮助手册")
     @PostMapping("/add")
     public Object add(@RequestBody SysManual sysManual) throws Exception {
         this.check(sysManual);
-        sysManualService.save(sysManual);
-        return succeed();
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        return succeed(sysManualService.add(sysManual, sysUser.getId()));
     }
 
     @ApiOperation(value = "修改帮助手册")
@@ -59,8 +61,11 @@ public class SysManualController extends BaseController {
         if (sysManual.getId() == null) {
             throw new Exception("更新必须有id");
         }
-        sysManualService.updateById(sysManual);
-        return succeed();
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        return succeed(sysManualService.update(sysManual, sysUser.getId()));
     }
 
     private void check(SysManual sysManual) throws Exception {

+ 4 - 0
mec-web/src/main/resources/columnMapper.ini

@@ -48,3 +48,7 @@
 商品数量 = goodsNums
 备注 = memo
 缴费单号 = calenderId
+
+[兑换码分配模板表]
+分配码 = code
+兑换链接 = url