Bläddra i källkod

Merge remote-tracking branch 'origin/master'

wangzhe 1 år sedan
förälder
incheckning
f638b0f384

+ 93 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/handleAffairs/GridTypeController.java

@@ -0,0 +1,93 @@
+package com.ruoyi.web.controller.handleAffairs;
+
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.sooka.jnb.handleAffairs.domain.GridType;
+import com.sooka.jnb.handleAffairs.service.IGridTypeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+@RestController
+@RequestMapping("/jnb/gridType")
+public class GridTypeController extends BaseController {
+
+    @Autowired
+    private IGridTypeService gridTypeService;
+
+    /**
+     * 查询网格类型配置列表
+     */
+    @PreAuthorize("@ss.hasPermi('jnb:gridType:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(GridType GridType)
+    {
+        startPage();
+        List<GridType> list = gridTypeService.selectGridTypeList(GridType);
+        return getDataTable(list);
+    }
+
+    /**
+     * 获取网格类型配置详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('jnb:gridType:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(gridTypeService.selectGridTypeById(id));
+    }
+
+    /**
+     * 新增网格类型配置
+     */
+    @PreAuthorize("@ss.hasPermi('jnb:gridType:add')")
+    @Log(title = "网格类型配置", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@Validated @RequestBody GridType GridType)
+    {
+        return toAjax(gridTypeService.insertGridType(GridType));
+    }
+
+    /**
+     * 修改网格类型配置
+     */
+    @PreAuthorize("@ss.hasPermi('jnb:gridType:edit')")
+    @Log(title = "网格类型配置", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@Validated @RequestBody GridType GridType)
+    {
+        return toAjax(gridTypeService.updateGridType(GridType));
+    }
+
+    /**
+     * 删除网格类型配置
+     */
+    @PreAuthorize("@ss.hasPermi('jnb:gridType:remove')")
+    @Log(title = "网格类型配置", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(gridTypeService.deleteGridTypeByIds(ids));
+    }
+
+    /**
+     * 导出网格类型配置列表
+     */
+    @PreAuthorize("@ss.hasPermi('jnb:gridType:export')")
+    @Log(title = "网格类型配置", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, GridType GridType)
+    {
+        List<GridType> list = gridTypeService.selectGridTypeList(GridType);
+        ExcelUtil<GridType> util = new ExcelUtil<GridType>(GridType.class);
+        util.exportExcel(response, list, "网格类型配置数据");
+    }
+}

+ 66 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/score/ScoreController.java

@@ -0,0 +1,66 @@
+package com.ruoyi.web.controller.score;
+
+import com.ruoyi.common.core.domain.R;
+import com.sooka.jnb.score.domain.ScoreOperate;
+import com.sooka.jnb.score.service.IScoreService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/score")
+public class ScoreController {
+    @Autowired
+    private IScoreService service;
+
+    /**
+     * 初始化积分
+     *
+     * @param scoreOperate
+     * @return
+     */
+    @PostMapping("/initScore")
+    public R initScore(@RequestBody ScoreOperate scoreOperate) {
+        if(service.soleVerify(scoreOperate.getUserId())){
+            return R.fail("用户已存在, 不能初始化积分!");
+        }
+        return R.ok(service.initScore(scoreOperate));
+    }
+
+    /**
+     * 获取积分
+     *
+     * @param userId
+     * @return
+     */
+    @GetMapping("/getScore")
+    public R getScore(@RequestParam String userId) {
+        return R.ok(service.getScore(userId));
+    }
+
+    /**
+     * 获取积分流水
+     */
+    @GetMapping("/getScoreList")
+    public R getScoreList(@RequestParam String userId) {
+        return R.ok(service.getScoreList(userId));
+    }
+
+    /**
+     * 增加积分
+     */
+    @PostMapping("/addScore")
+    public R addScore(@RequestBody ScoreOperate scoreOperate) {
+        return R.ok(service.addScore(scoreOperate));
+    }
+
+
+    /**
+     * 减少积分
+     */
+    @PostMapping("/reduceScore")
+    public R reduceScore(@RequestBody ScoreOperate scoreOperate) {
+        return R.ok(service.reduceScore(scoreOperate));
+    }
+
+
+}

+ 41 - 0
sooka-jnb/src/main/java/com/sooka/jnb/handleAffairs/domain/GridType.java

@@ -0,0 +1,41 @@
+package com.sooka.jnb.handleAffairs.domain;
+
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * 网格类型配置对象 jnb_grid_type
+ * 
+ * @author lidongyu
+ * @date 2024-03-01
+ */
+@Data
+public class GridType extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** id */
+    private Long id;
+
+    /** 名称 */
+    @Excel(name = "名称")
+    @NotBlank(message = "名称不能为空")
+    private String name;
+
+    /** 岗位描述 */
+    @Excel(name = "岗位描述")
+    @NotBlank(message = "岗位描述不能为空")
+    private String jobDescription;
+
+    /** 图片路径 */
+    @Excel(name = "图片路径")
+    private String fileUrl;
+
+    /** 是否展示 */
+    @Excel(name = "是否展示")
+    private String yesOrNoShow;
+
+}

+ 63 - 0
sooka-jnb/src/main/java/com/sooka/jnb/handleAffairs/mapper/GridTypeMapper.java

@@ -0,0 +1,63 @@
+package com.sooka.jnb.handleAffairs.mapper;
+
+import com.sooka.jnb.handleAffairs.domain.GridType;
+
+import java.util.List;
+
+
+/**
+ * 网格类型配置Mapper接口
+ * 
+ * @author lidongyu
+ * @date 2024-03-01
+ */
+public interface GridTypeMapper 
+{
+    /**
+     * 查询网格类型配置
+     * 
+     * @param id 网格类型配置主键
+     * @return 网格类型配置
+     */
+    public GridType selectGridTypeById(Long id);
+
+    /**
+     * 查询网格类型配置列表
+     * 
+     * @param gridType 网格类型配置
+     * @return 网格类型配置集合
+     */
+    public List<GridType> selectGridTypeList(GridType gridType);
+
+    /**
+     * 新增网格类型配置
+     * 
+     * @param gridType 网格类型配置
+     * @return 结果
+     */
+    public int insertGridType(GridType gridType);
+
+    /**
+     * 修改网格类型配置
+     * 
+     * @param gridType 网格类型配置
+     * @return 结果
+     */
+    public int updateGridType(GridType gridType);
+
+    /**
+     * 删除网格类型配置
+     * 
+     * @param id 网格类型配置主键
+     * @return 结果
+     */
+    public int deleteGridTypeById(Long id);
+
+    /**
+     * 批量删除网格类型配置
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteGridTypeByIds(Long[] ids);
+}

+ 63 - 0
sooka-jnb/src/main/java/com/sooka/jnb/handleAffairs/service/IGridTypeService.java

@@ -0,0 +1,63 @@
+package com.sooka.jnb.handleAffairs.service;
+
+import com.sooka.jnb.handleAffairs.domain.GridType;
+
+import java.util.List;
+
+
+/**
+ * 网格类型配置Service接口
+ * 
+ * @author lidongyu
+ * @date 2024-03-01
+ */
+public interface IGridTypeService
+{
+    /**
+     * 查询网格类型配置
+     * 
+     * @param id 网格类型配置主键
+     * @return 网格类型配置
+     */
+    public GridType selectGridTypeById(Long id);
+
+    /**
+     * 查询网格类型配置列表
+     * 
+     * @param gridType 网格类型配置
+     * @return 网格类型配置集合
+     */
+    public List<GridType> selectGridTypeList(GridType gridType);
+
+    /**
+     * 新增网格类型配置
+     * 
+     * @param gridType 网格类型配置
+     * @return 结果
+     */
+    public int insertGridType(GridType gridType);
+
+    /**
+     * 修改网格类型配置
+     * 
+     * @param gridType 网格类型配置
+     * @return 结果
+     */
+    public int updateGridType(GridType gridType);
+
+    /**
+     * 批量删除网格类型配置
+     * 
+     * @param ids 需要删除的网格类型配置主键集合
+     * @return 结果
+     */
+    public int deleteGridTypeByIds(Long[] ids);
+
+    /**
+     * 删除网格类型配置信息
+     * 
+     * @param id 网格类型配置主键
+     * @return 结果
+     */
+    public int deleteGridTypeById(Long id);
+}

+ 102 - 0
sooka-jnb/src/main/java/com/sooka/jnb/handleAffairs/service/impl/GridTypeServiceImpl.java

@@ -0,0 +1,102 @@
+package com.sooka.jnb.handleAffairs.service.impl;
+
+
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.sooka.jnb.handleAffairs.domain.GridType;
+import com.sooka.jnb.handleAffairs.mapper.GridTypeMapper;
+import com.sooka.jnb.handleAffairs.service.IGridTypeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 网格类型配置Service业务层处理
+ * 
+ * @author lidongyu
+ * @date 2024-03-01
+ */
+@Service
+public class GridTypeServiceImpl implements IGridTypeService 
+{
+    @Autowired
+    private GridTypeMapper gridTypeMapper;
+
+    /**
+     * 查询网格类型配置
+     * 
+     * @param id 网格类型配置主键
+     * @return 网格类型配置
+     */
+    @Override
+    public GridType selectGridTypeById(Long id)
+    {
+        return gridTypeMapper.selectGridTypeById(id);
+    }
+
+    /**
+     * 查询网格类型配置列表
+     * 
+     * @param gridType 网格类型配置
+     * @return 网格类型配置
+     */
+    @Override
+    public List<GridType> selectGridTypeList(GridType gridType)
+    {
+        return gridTypeMapper.selectGridTypeList(gridType);
+    }
+
+    /**
+     * 新增网格类型配置
+     * 
+     * @param gridType 网格类型配置
+     * @return 结果
+     */
+    @Override
+    public int insertGridType(GridType gridType)
+    {
+        gridType.setCreateTime(DateUtils.getNowDate());
+        gridType.setCreateBy(SecurityUtils.getUserId().toString());
+        gridType.setDelFlag("0");
+        return gridTypeMapper.insertGridType(gridType);
+    }
+
+    /**
+     * 修改网格类型配置
+     * 
+     * @param gridType 网格类型配置
+     * @return 结果
+     */
+    @Override
+    public int updateGridType(GridType gridType)
+    {
+        gridType.setUpdateTime(DateUtils.getNowDate());
+        gridType.setUpdateBy(SecurityUtils.getUserId().toString());
+        return gridTypeMapper.updateGridType(gridType);
+    }
+
+    /**
+     * 批量删除网格类型配置
+     * 
+     * @param ids 需要删除的网格类型配置主键
+     * @return 结果
+     */
+    @Override
+    public int deleteGridTypeByIds(Long[] ids)
+    {
+        return gridTypeMapper.deleteGridTypeByIds(ids);
+    }
+
+    /**
+     * 删除网格类型配置信息
+     * 
+     * @param id 网格类型配置主键
+     * @return 结果
+     */
+    @Override
+    public int deleteGridTypeById(Long id)
+    {
+        return gridTypeMapper.deleteGridTypeById(id);
+    }
+}

+ 0 - 23
sooka-jnb/src/main/java/com/sooka/jnb/score/domain/Score.java

@@ -1,23 +0,0 @@
-package com.sooka.jnb.score.domain;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-import lombok.Data;
-
-import java.math.BigInteger;
-import java.util.Date;
-
-/**
- * 积分实体类
- * @author LG
- * @date 2021/1/21 10:59
- */
-@Data
-public class Score {
-    private int id;
-    private String userId;
-    private BigInteger scoreNum;
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    private Date createTime;
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    private Date updateTime;
-}

+ 41 - 2
sooka-jnb/src/main/java/com/sooka/jnb/score/domain/ScoreOperate.java

@@ -3,22 +3,61 @@ package com.sooka.jnb.score.domain;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
+import org.apache.ibatis.type.Alias;
 
 import java.math.BigInteger;
 import java.util.Date;
 
 /**
- * 积分流水实体类
+ * 积分以及流水实体类
+ *
  * @author LG
  * @date 2020-09-07 11:14
  */
 @Data
+@Alias("scoreOperate")
 public class ScoreOperate {
-    private BigInteger id;
+    /**
+     * 数据id
+     */
+    private Integer id;
+
+    /**
+     * 用户id
+     */
     private String userId;
+
+    /**
+     * 积分
+     */
+    private Integer scoreNum;
+
+    /**
+     * 积分操作
+     */
     private String scoreOperate;
+
+    /**
+     * 创建时间
+     */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updateTime;
+
+    /**
+     * 积分操作类型
+     */
     private String relevance;
+
+    /**
+     * 积分操作类型的数据id
+     */
     private String relevanceDataId;
+
+
 }

+ 22 - 0
sooka-jnb/src/main/java/com/sooka/jnb/score/mapper/ScoreMapper.java

@@ -0,0 +1,22 @@
+package com.sooka.jnb.score.mapper;
+
+import com.sooka.jnb.score.domain.ScoreOperate;
+
+import java.util.List;
+import java.util.Map;
+
+public interface ScoreMapper {
+    int initScore(ScoreOperate score);
+
+    ScoreOperate getScore(String userId);
+
+    List<ScoreOperate> getScoreList(String userId);
+
+    int addScore(ScoreOperate score);
+
+    int reduceScore(ScoreOperate score);
+
+    int insertScoreOperate(ScoreOperate score);
+
+    Map<String, Long> soleVerify(String userId);
+}

+ 54 - 0
sooka-jnb/src/main/java/com/sooka/jnb/score/service/IScoreService.java

@@ -0,0 +1,54 @@
+package com.sooka.jnb.score.service;
+
+import com.sooka.jnb.score.domain.ScoreOperate;
+
+import java.util.List;
+
+public interface IScoreService{
+
+    /**
+     * 初始化积分
+     * @param score 积分实体类
+     * - userId 用户ID
+     * - scoreNum 初始化积分
+     * - createTime 创建时间
+     */
+    int initScore(ScoreOperate score);
+
+    /**
+     * 获取积分
+     * @param userId 用户id
+     */
+    ScoreOperate getScore(String userId);
+
+    /**
+     * 获取积分流水
+     */
+    List<ScoreOperate> getScoreList(String userId);
+
+    /**
+     * 增加积分
+     * @param scoreOperate 积分操作实体
+     * - userId 用户id
+     * - scoreNum 增加的分数
+     * - createTime 创建时间
+     */
+    int addScore(ScoreOperate scoreOperate);
+
+    /**
+     * 减少积分
+     * @param scoreOperate 积分操作实体
+     * - userId 用户id
+     * - scoreNum 减少的分数
+     * - createTime 创建时间
+     */
+    int reduceScore(ScoreOperate scoreOperate);
+
+    /**
+     * 唯一校验
+     * @param userId 用户id
+     * @return boolean 用户存在返回true,不存在则返回false
+     */
+    boolean soleVerify(String userId);
+
+}

+ 82 - 0
sooka-jnb/src/main/java/com/sooka/jnb/score/service/impl/ScoreServiceImpl.java

@@ -0,0 +1,82 @@
+package com.sooka.jnb.score.service.impl;
+
+import com.sooka.jnb.score.domain.ScoreOperate;
+import com.sooka.jnb.score.mapper.ScoreMapper;
+import com.sooka.jnb.score.service.IScoreService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 积分操作
+ *
+ * @author LG
+ * @date 2019-05-29 10:43
+ */
+@Service
+public class ScoreServiceImpl implements IScoreService {
+
+    private static final String ADD = "+";
+    private static final String REDUCE = "-";
+
+    @Resource
+    private ScoreMapper scoreMapper;
+
+    @Override
+    @Transactional
+    public int initScore(ScoreOperate score) {
+        if (null == score.getCreateTime()) {
+            score.setCreateTime(new Date());
+        }
+        score.setScoreOperate(ADD + score.getScoreNum());
+        scoreMapper.insertScoreOperate(score);
+        return scoreMapper.initScore(score);
+    }
+
+    @Override
+    public ScoreOperate getScore(String userId) {
+        return scoreMapper.getScore(userId);
+    }
+
+    @Override
+    public List<ScoreOperate> getScoreList(String userId) {
+        return scoreMapper.getScoreList(userId);
+    }
+
+    @Override
+    @Transactional
+    public int addScore(ScoreOperate scoreOperate) {
+        scoreMapper.addScore(scoreOperate);
+        return this.insertScoreOperate(scoreOperate, ADD);
+    }
+
+    @Override
+    @Transactional
+    public int reduceScore(ScoreOperate scoreOperate) {
+        scoreMapper.reduceScore(scoreOperate);
+        return this.insertScoreOperate(scoreOperate, REDUCE);
+    }
+
+    /**
+     * 插入积分操作记录
+     * @param scoreOperate 积分操作对象
+     * @param operate 积分操作类型
+     */
+    private int insertScoreOperate(ScoreOperate scoreOperate, String operate) {
+        scoreOperate.setScoreOperate(operate + scoreOperate.getScoreNum());
+        Date date = new Date();
+        scoreOperate.setCreateTime(date);
+        scoreOperate.setUpdateTime(date);
+        return scoreMapper.insertScoreOperate(scoreOperate);
+    }
+
+    @Override
+    public boolean soleVerify(String userId) {
+        Map<String, Long> resultMap = scoreMapper.soleVerify(userId);
+        return resultMap.get("personSum") > 0;
+    }
+}

+ 91 - 0
sooka-jnb/src/main/resources/mapper/handleAffairs/GridTypeMapper.xml

@@ -0,0 +1,91 @@
+<?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.sooka.jnb.handleAffairs.mapper.GridTypeMapper">
+    
+    <resultMap type="GridType" id="GridTypeResult">
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="version"    column="version"    />
+        <result property="id"    column="id"    />
+        <result property="name"    column="name"    />
+        <result property="jobDescription"    column="job_description"    />
+        <result property="fileUrl"    column="file_url"    />
+        <result property="yesOrNoShow"    column="yes_or_no_show"    />
+    </resultMap>
+
+    <sql id="selectGridTypeVo">
+        select create_by, create_time, update_by, update_time, remark, del_flag, version, id, name, job_description, file_url, yes_or_no_show from jnb_grid_type
+    </sql>
+
+    <select id="selectGridTypeList" parameterType="GridType" resultMap="GridTypeResult">
+        <include refid="selectGridTypeVo"/>
+        <where>
+            and del_flag = 0
+            <if test="name != null  and name != ''"> and name like concat('%', #{name}, '%')</if>
+            <if test="yesOrNoShow != null  and yesOrNoShow != ''"> and yes_or_no_show = #{yesOrNoShow}</if>
+        </where>
+    </select>
+    
+    <select id="selectGridTypeById" parameterType="Long" resultMap="GridTypeResult">
+        <include refid="selectGridTypeVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertGridType" parameterType="GridType" useGeneratedKeys="true" keyProperty="id">
+        insert into jnb_grid_type
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="name != null and name != ''">name,</if>
+            <if test="jobDescription != null and jobDescription != ''">job_description,</if>
+            <if test="fileUrl != null">file_url,</if>
+            <if test="yesOrNoShow != null">yes_or_no_show,</if>
+            <if test="delFlag != null">del_flag,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="name != null and name != ''">#{name},</if>
+            <if test="jobDescription != null and jobDescription != ''">#{jobDescription},</if>
+            <if test="fileUrl != null">#{fileUrl},</if>
+            <if test="yesOrNoShow != null">#{yesOrNoShow},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+         </trim>
+    </insert>
+
+    <update id="updateGridType" parameterType="GridType">
+        update jnb_grid_type
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="name != null and name != ''">name = #{name},</if>
+            <if test="jobDescription != null and jobDescription != ''">job_description = #{jobDescription},</if>
+            <if test="fileUrl != null">file_url = #{fileUrl},</if>
+            <if test="yesOrNoShow != null">yes_or_no_show = #{yesOrNoShow},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteGridTypeById" parameterType="Long">
+        update jnb_grid_type set del_flag = 2  where id = #{id}
+    </delete>
+
+    <delete id="deleteGridTypeByIds" parameterType="String">
+        update jnb_grid_type set del_flag = 2 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 61 - 0
sooka-jnb/src/main/resources/mapper/score/ScoreMapper.xml

@@ -0,0 +1,61 @@
+<?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">
+<!--suppress ALL -->
+<mapper namespace="com.sooka.jnb.score.mapper.ScoreMapper">
+    
+    <resultMap id="scoreOperateResult" type="scoreOperate">
+        <id property="id" column="id"/>
+        <result property="userId" column="user_id"/>
+        <result property="scoreOperate" column="score_operate"/>
+        <result property="scoreNum" column="score_num"/>
+        <result property="relevance" column="relevance"/>
+        <result property="relevanceDataId" column="relevance_data_id"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+    </resultMap>
+
+
+    <!-- 初始化积分 -->
+    <insert id="initScore" parameterType="scoreOperate">
+        insert into jnb_score(user_id, score_num, create_time)
+        values(#{userId}, #{scoreNum}, #{createTime})
+    </insert>
+
+    <!-- 获取积分 -->
+    <select id="getScore" parameterType="string" resultMap="scoreOperateResult">
+        select id, user_id, score_num from jnb_score where user_id = #{userId}
+    </select>
+
+    <!-- 获取积分流水 -->
+    <select id="getScoreList" parameterType="string" resultMap="scoreOperateResult">
+        select jso.id, jso.user_id, jso.score_operate, jso.score_num, jso.create_time, sdd.dict_label as relevance, jso.relevance_data_id
+        from jnb_score_operate jso
+        left join sys_dict_data sdd on jso.relevance = sdd.dict_value
+        where sdd.dict_type = 'score_type' and  user_id = #{userId}
+        order by create_time desc
+    </select>
+
+    <!-- 增加积分 -->
+    <update id="addScore" parameterType="scoreOperate">
+        update jnb_score set score_num = score_num + #{scoreNum}, update_time = #{updateTime} where user_id = #{userId}
+    </update>
+
+    <!-- 减少积分 -->
+    <update id="reduceScore" parameterType="scoreOperate">
+        update jnb_score set score_num = score_num - #{scoreNum}, update_time = #{updateTime} where user_id = #{userId}
+    </update>
+
+    <!-- 积分流水操作 -->
+    <insert id="insertScoreOperate" parameterType="scoreOperate">
+        insert into jnb_score_operate(user_id, score_operate, score_num, create_time, relevance, relevance_data_id)
+        values(#{userId}, #{scoreOperate}, (select score_num from jnb_score where user_id = #{userId}), #{createTime}, #{relevance}, #{relevanceDataId})
+    </insert>
+
+    <!-- 唯一校验 -->
+    <select id="soleVerify" parameterType="string" resultType="map">
+        select count(1) as personSum from jnb_score where user_id = #{userId}
+    </select>
+    
+</mapper>