wjj hace 1 semana
padre
commit
5430b7d213
Se han modificado 21 ficheros con 821 adiciones y 1 borrados
  1. 105 0
      fs-admin/src/main/java/com/fs/app/controller/FsAppRoleController.java
  2. 11 0
      fs-admin/src/main/java/com/fs/his/controller/FsPackageController.java
  3. 11 0
      fs-admin/src/main/java/com/fs/hisStore/controller/FsStoreProductScrmController.java
  4. 13 0
      fs-admin/src/main/java/com/fs/qw/controller/QwTagController.java
  5. 100 0
      fs-service/src/main/java/com/fs/app/domain/FsAppRole.java
  6. 61 0
      fs-service/src/main/java/com/fs/app/mapper/FsAppRoleMapper.java
  7. 62 0
      fs-service/src/main/java/com/fs/app/service/IFsAppRoleService.java
  8. 177 0
      fs-service/src/main/java/com/fs/app/service/impl/FsAppRoleServiceImpl.java
  9. 82 0
      fs-service/src/main/java/com/fs/app/vo/FsAppRoleVO.java
  10. 3 0
      fs-service/src/main/java/com/fs/his/domain/FsUser.java
  11. 5 0
      fs-service/src/main/java/com/fs/his/mapper/FsPackageMapper.java
  12. 2 0
      fs-service/src/main/java/com/fs/his/service/IFsPackageService.java
  13. 5 0
      fs-service/src/main/java/com/fs/his/service/impl/FsPackageServiceImpl.java
  14. 3 0
      fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreProductScrmMapper.java
  15. 2 0
      fs-service/src/main/java/com/fs/hisStore/service/IFsStoreProductScrmService.java
  16. 5 0
      fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreProductScrmServiceImpl.java
  17. 4 0
      fs-service/src/main/java/com/fs/qw/mapper/QwTagMapper.java
  18. 4 0
      fs-service/src/main/java/com/fs/qw/service/IQwTagService.java
  19. 7 0
      fs-service/src/main/java/com/fs/qw/service/impl/QwTagServiceImpl.java
  20. 154 0
      fs-service/src/main/resources/mapper/app/FsAppRoleMapper.xml
  21. 5 1
      fs-service/src/main/resources/mapper/his/FsUserMapper.xml

+ 105 - 0
fs-admin/src/main/java/com/fs/app/controller/FsAppRoleController.java

@@ -0,0 +1,105 @@
+package com.fs.app.controller;
+
+import java.util.List;
+
+import com.fs.app.vo.FsAppRoleVO;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.fs.common.annotation.Log;
+import com.fs.common.core.controller.BaseController;
+import com.fs.common.core.domain.AjaxResult;
+import com.fs.common.enums.BusinessType;
+import com.fs.app.domain.FsAppRole;
+import com.fs.app.service.IFsAppRoleService;
+import com.fs.common.utils.poi.ExcelUtil;
+import com.fs.common.core.page.TableDataInfo;
+
+/**
+ * APP角色Controller
+ * 
+ * @author fs
+ * @date 2026-02-26
+ */
+@RestController
+@RequestMapping("/app/role")
+public class FsAppRoleController extends BaseController
+{
+    @Autowired
+    private IFsAppRoleService fsAppRoleService;
+
+    /**
+     * 查询APP角色列表
+     */
+    @PreAuthorize("@ss.hasPermi('app:role:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(FsAppRole fsAppRole)
+    {
+        startPage();
+        List<FsAppRole> list = fsAppRoleService.selectFsAppRoleList(fsAppRole);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出APP角色列表
+     */
+    @PreAuthorize("@ss.hasPermi('app:role:export')")
+    @Log(title = "APP角色", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(FsAppRole fsAppRole)
+    {
+        List<FsAppRole> list = fsAppRoleService.selectFsAppRoleList(fsAppRole);
+        ExcelUtil<FsAppRole> util = new ExcelUtil<FsAppRole>(FsAppRole.class);
+        return util.exportExcel(list, "APP角色数据");
+    }
+
+    /**
+     * 获取APP角色详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('app:role:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(fsAppRoleService.selectFsAppRoleById(id));
+    }
+
+    /**
+     * 新增APP角色
+     */
+    @PreAuthorize("@ss.hasPermi('app:role:add')")
+    @Log(title = "APP角色", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody FsAppRoleVO fsAppRole)
+    {
+        return toAjax(fsAppRoleService.insertFsAppRole(fsAppRole));
+    }
+
+    /**
+     * 修改APP角色
+     */
+    @PreAuthorize("@ss.hasPermi('app:role:edit')")
+    @Log(title = "APP角色", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody FsAppRoleVO fsAppRole)
+    {
+        return toAjax(fsAppRoleService.updateFsAppRole(fsAppRole));
+    }
+
+    /**
+     * 删除APP角色
+     */
+    @PreAuthorize("@ss.hasPermi('app:role:remove')")
+    @Log(title = "APP角色", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(fsAppRoleService.deleteFsAppRoleByIds(ids));
+    }
+}

+ 11 - 0
fs-admin/src/main/java/com/fs/his/controller/FsPackageController.java

@@ -191,4 +191,15 @@ public class FsPackageController extends BaseController
         return toAjax(fsPackageService.updatePackagesStatus(param.getPackageIds(),param.getStatus()));
     }
 
+
+    /**
+     * 查询套餐包选项列表
+     */
+    @GetMapping("/options")
+    public TableDataInfo selectPackageList()
+    {
+        List<OptionsVO> list = fsPackageService.selectPackageList();
+        return getDataTable(list);
+    }
+
 }

+ 11 - 0
fs-admin/src/main/java/com/fs/hisStore/controller/FsStoreProductScrmController.java

@@ -8,6 +8,7 @@ import com.fs.common.core.domain.R;
 import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.enums.BusinessType;
 import com.fs.common.utils.poi.ExcelUtil;
+import com.fs.his.vo.OptionsVO;
 import com.fs.hisStore.vo.FsStoreProductAttrValueVO;
 import com.fs.hisStore.vo.FsStoreProductExportVO;
 import com.fs.hisStore.vo.FsStoreProductListVO;
@@ -222,4 +223,14 @@ public class FsStoreProductScrmController extends BaseController
         return R.ok().put("data",list);
     }
 
+    /**
+     * 查询商城商品选项列表
+     */
+    @GetMapping("/options")
+    public TableDataInfo selectPackageList()
+    {
+        List<OptionsVO> list = fsStoreProductService.selectProductOptions();
+        return getDataTable(list);
+    }
+
 }

+ 13 - 0
fs-admin/src/main/java/com/fs/qw/controller/QwTagController.java

@@ -6,9 +6,11 @@ import com.fs.common.core.domain.AjaxResult;
 import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.enums.BusinessType;
 import com.fs.common.utils.poi.ExcelUtil;
+import com.fs.his.vo.OptionsVO;
 import com.fs.qw.domain.QwTag;
 import com.fs.qw.param.QwTagParam;
 import com.fs.qw.service.IQwTagService;
+import com.fs.qw.vo.sidebar.ExternalContactTagVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
@@ -99,4 +101,15 @@ public class QwTagController extends BaseController
     {
         return toAjax(qwTagService.deleteQwTagByIds(ids));
     }
+
+
+    /**
+     * 查询标签选项列表
+     */
+    @GetMapping("/options")
+    public TableDataInfo selectTagListOptions()
+    {
+        List<ExternalContactTagVO> list = qwTagService.selectQwTagListOptions();
+        return getDataTable(list);
+    }
 }

+ 100 - 0
fs-service/src/main/java/com/fs/app/domain/FsAppRole.java

@@ -0,0 +1,100 @@
+package com.fs.app.domain;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fs.common.annotation.Excel;
+import lombok.Data;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.EqualsAndHashCode;
+
+/**
+ * APP角色对象 fs_app_role
+ *
+ * @author fs
+ * @date 2026-02-26
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class FsAppRole extends BaseEntity{
+
+    /** $column.columnComment */
+    private Long id;
+
+    /** APP角色名称 */
+    @Excel(name = "APP角色名称")
+    private String roleName;
+
+    /** 注册奖励类型:1-红包 2-积分 3-商品 */
+    @Excel(name = "注册奖励类型:1-红包 2-积分 3-商品")
+    private Integer registerRewardType;
+
+    /** 注册-红包金额 */
+    @Excel(name = "注册-红包金额")
+    private BigDecimal registerRedPacket;
+
+    /** 注册-商品 */
+    @Excel(name = "注册-商品")
+    private Long registerProductId;
+
+    /** 注册商品类型:1-套餐包 2-商城 */
+    @Excel(name = "注册商品类型:1-套餐包 2-商城")
+    private Integer registerProductType;
+
+    /** 注册-积分 */
+    @Excel(name = "注册-积分")
+    private BigDecimal registerIntegral;
+
+    /** 看课奖励有效天数 */
+    @Excel(name = "看课奖励有效天数")
+    private Long courseDay;
+
+    /** 看课奖励类型:1-红包 2-积分 3-商品 */
+    @Excel(name = "看课奖励类型:1-红包 2-积分 3-商品")
+    private Integer courseRewardType;
+
+    /** 看课-红包金额 */
+    @Excel(name = "看课-红包金额")
+    private BigDecimal courseRedPacket;
+
+    /** 看课-积分 */
+    @Excel(name = "看课-积分")
+    private BigDecimal courseIntegral;
+
+    /** 看课商品类型:1-套餐包 2-商城 */
+    @Excel(name = "看课商品类型:1-套餐包 2-商城")
+    private Integer courseProductType;
+
+    /** 看课-商品id */
+    @Excel(name = "看课-商品id")
+    private Long courseProductId;
+
+    /** 看课商品领取所需天数 */
+    @Excel(name = "看课商品领取所需天数")
+    private Long courseNeedDay;
+
+    /** 红包/积分规则类型: 1-平均 2-定制 */
+    @Excel(name = "红包/积分规则类型: 1-平均 2-定制")
+    private Integer courseRewardRuleType;
+
+    /** 红包/积分规则 */
+    @Excel(name = "红包/积分规则")
+    private String courseRewardRule;
+
+    /** 角色等级 */
+    @Excel(name = "角色等级")
+    private Long roleLevel;
+
+    /** 角色标签 */
+    @Excel(name = "角色标签")
+    private String roleTags;
+
+    /** 角色套餐包id */
+    @Excel(name = "角色套餐包id")
+    private String rolePackageProductIds;
+
+    /** 角色商城id */
+    @Excel(name = "角色商城id")
+    private String roleStoreProductIds;
+
+
+}

+ 61 - 0
fs-service/src/main/java/com/fs/app/mapper/FsAppRoleMapper.java

@@ -0,0 +1,61 @@
+package com.fs.app.mapper;
+
+import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fs.app.domain.FsAppRole;
+
+/**
+ * APP角色Mapper接口
+ * 
+ * @author fs
+ * @date 2026-02-26
+ */
+public interface FsAppRoleMapper extends BaseMapper<FsAppRole>{
+    /**
+     * 查询APP角色
+     * 
+     * @param id APP角色主键
+     * @return APP角色
+     */
+    FsAppRole selectFsAppRoleById(Long id);
+
+    /**
+     * 查询APP角色列表
+     * 
+     * @param fsAppRole APP角色
+     * @return APP角色集合
+     */
+    List<FsAppRole> selectFsAppRoleList(FsAppRole fsAppRole);
+
+    /**
+     * 新增APP角色
+     * 
+     * @param fsAppRole APP角色
+     * @return 结果
+     */
+    int insertFsAppRole(FsAppRole fsAppRole);
+
+    /**
+     * 修改APP角色
+     * 
+     * @param fsAppRole APP角色
+     * @return 结果
+     */
+    int updateFsAppRole(FsAppRole fsAppRole);
+
+    /**
+     * 删除APP角色
+     * 
+     * @param id APP角色主键
+     * @return 结果
+     */
+    int deleteFsAppRoleById(Long id);
+
+    /**
+     * 批量删除APP角色
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    int deleteFsAppRoleByIds(Long[] ids);
+}

+ 62 - 0
fs-service/src/main/java/com/fs/app/service/IFsAppRoleService.java

@@ -0,0 +1,62 @@
+package com.fs.app.service;
+
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fs.app.domain.FsAppRole;
+import com.fs.app.vo.FsAppRoleVO;
+
+/**
+ * APP角色Service接口
+ * 
+ * @author fs
+ * @date 2026-02-26
+ */
+public interface IFsAppRoleService extends IService<FsAppRole>{
+    /**
+     * 查询APP角色
+     * 
+     * @param id APP角色主键
+     * @return APP角色
+     */
+    FsAppRoleVO selectFsAppRoleById(Long id);
+
+    /**
+     * 查询APP角色列表
+     * 
+     * @param fsAppRole APP角色
+     * @return APP角色集合
+     */
+    List<FsAppRole> selectFsAppRoleList(FsAppRole fsAppRole);
+
+    /**
+     * 新增APP角色
+     * 
+     * @param fsAppRole APP角色
+     * @return 结果
+     */
+    int insertFsAppRole(FsAppRoleVO fsAppRole);
+
+    /**
+     * 修改APP角色
+     * 
+     * @param fsAppRole APP角色
+     * @return 结果
+     */
+    int updateFsAppRole(FsAppRoleVO fsAppRole);
+
+    /**
+     * 批量删除APP角色
+     * 
+     * @param ids 需要删除的APP角色主键集合
+     * @return 结果
+     */
+    int deleteFsAppRoleByIds(Long[] ids);
+
+    /**
+     * 删除APP角色信息
+     * 
+     * @param id APP角色主键
+     * @return 结果
+     */
+    int deleteFsAppRoleById(Long id);
+}

+ 177 - 0
fs-service/src/main/java/com/fs/app/service/impl/FsAppRoleServiceImpl.java

@@ -0,0 +1,177 @@
+package com.fs.app.service.impl;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.fs.app.vo.FsAppRoleVO;
+import com.fs.common.utils.DateUtils;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fs.common.utils.StringUtils;
+import com.google.common.collect.Lists;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.fs.app.mapper.FsAppRoleMapper;
+import com.fs.app.domain.FsAppRole;
+import com.fs.app.service.IFsAppRoleService;
+import org.springframework.util.CollectionUtils;
+
+/**
+ * APP角色Service业务层处理
+ * 
+ * @author fs
+ * @date 2026-02-26
+ */
+@Service
+public class FsAppRoleServiceImpl extends ServiceImpl<FsAppRoleMapper, FsAppRole> implements IFsAppRoleService {
+
+    @Autowired
+    private FsAppRoleMapper fsAppRoleMapper;
+
+    /**
+     * 查询APP角色
+     * 
+     * @param id APP角色主键
+     * @return APP角色
+     */
+    @Override
+    public FsAppRoleVO selectFsAppRoleById(Long id)
+    {
+        FsAppRole fsAppRole = fsAppRoleMapper.selectFsAppRoleById(id);
+        FsAppRoleVO vo = new FsAppRoleVO();
+        BeanUtils.copyProperties(fsAppRole, vo);
+
+        //角色标签
+        if (StringUtils.isNotEmpty(fsAppRole.getRoleTags())) {
+            List<String> roleTags = Arrays.stream(fsAppRole.getRoleTags().split(",")).collect(Collectors.toList());
+            vo.setRoleTags(roleTags);
+        } else {
+            vo.setRoleTags(Lists.newArrayList());
+        }
+
+        //角色套餐包
+        if (StringUtils.isNotEmpty(fsAppRole.getRolePackageProductIds())) {
+            List<Long> packageIds = Arrays.stream(fsAppRole.getRolePackageProductIds().split(","))
+                    .map(String::trim)
+                    .map(Long::parseLong)
+                    .collect(Collectors.toList());
+            vo.setRolePackageProductIds(packageIds);
+        } else {
+            vo.setRolePackageProductIds(Lists.newArrayList());
+        }
+
+        //角色商品
+        if (StringUtils.isNotEmpty(fsAppRole.getRoleStoreProductIds())) {
+            List<Long> productIds = Arrays.stream(fsAppRole.getRoleStoreProductIds().split(","))
+                    .map(String::trim)
+                    .map(Long::parseLong)
+                    .collect(Collectors.toList());
+            vo.setRoleStoreProductIds(productIds);
+        } else {
+            vo.setRoleStoreProductIds(Lists.newArrayList());
+        }
+
+        //红包/积分规则
+        if (StringUtils.isNotEmpty(fsAppRole.getCourseRewardRule())) {
+            List<FsAppRoleVO.Options> options = JSON.parseArray(fsAppRole.getCourseRewardRule(), FsAppRoleVO.Options.class);
+            vo.setCourseRewardRule(options);
+        }
+        return vo;
+    }
+
+    /**
+     * 查询APP角色列表
+     * 
+     * @param fsAppRole APP角色
+     * @return APP角色
+     */
+    @Override
+    public List<FsAppRole> selectFsAppRoleList(FsAppRole fsAppRole)
+    {
+        return baseMapper.selectFsAppRoleList(fsAppRole);
+    }
+
+    /**
+     * 新增APP角色
+     * 
+     * @param param APP角色
+     * @return 结果
+     */
+    @Override
+    public int insertFsAppRole(FsAppRoleVO param)
+    {
+        FsAppRole fsAppRole = new FsAppRole();
+        BeanUtils.copyProperties(param, fsAppRole);
+        fsAppRole.setCreateTime(DateUtils.getNowDate());
+        getRoleData(param, fsAppRole);
+        return baseMapper.insertFsAppRole(fsAppRole);
+    }
+
+    /**
+     * 修改APP角色
+     * 
+     * @param param APP角色
+     * @return 结果
+     */
+    @Override
+    public int updateFsAppRole(FsAppRoleVO param)
+    {
+        FsAppRole fsAppRole = new FsAppRole();
+        BeanUtils.copyProperties(param, fsAppRole);
+        fsAppRole.setUpdateTime(DateUtils.getNowDate());
+        getRoleData(param, fsAppRole);
+        return baseMapper.updateFsAppRole(fsAppRole);
+    }
+
+    private void getRoleData(FsAppRoleVO param, FsAppRole fsAppRole) {
+        if (!CollectionUtils.isEmpty(param.getRoleTags())) {
+            fsAppRole.setRoleTags(String.join(",", param.getRoleTags()));
+        } else {
+            fsAppRole.setRoleTags("");
+        }
+        if (!CollectionUtils.isEmpty(param.getRolePackageProductIds())) {
+            fsAppRole.setRolePackageProductIds(StringUtils.join(param.getRolePackageProductIds(), ","));
+        } else {
+            fsAppRole.setRolePackageProductIds("");
+        }
+        if (!CollectionUtils.isEmpty(param.getRoleStoreProductIds())) {
+            fsAppRole.setRoleStoreProductIds(StringUtils.join(param.getRoleStoreProductIds(), ","));
+        } else {
+            fsAppRole.setRoleStoreProductIds("");
+        }
+        if (!CollectionUtils.isEmpty(param.getCourseRewardRule())) {
+            fsAppRole.setCourseRewardRule(JSON.toJSONString(param.getCourseRewardRule()));
+        } else {
+            fsAppRole.setCourseRewardRule("");
+        }
+    }
+
+    /**
+     * 批量删除APP角色
+     * 
+     * @param ids 需要删除的APP角色主键
+     * @return 结果
+     */
+    @Override
+    public int deleteFsAppRoleByIds(Long[] ids)
+    {
+        return baseMapper.deleteFsAppRoleByIds(ids);
+    }
+
+    /**
+     * 删除APP角色信息
+     * 
+     * @param id APP角色主键
+     * @return 结果
+     */
+    @Override
+    public int deleteFsAppRoleById(Long id)
+    {
+        return baseMapper.deleteFsAppRoleById(id);
+    }
+}

+ 82 - 0
fs-service/src/main/java/com/fs/app/vo/FsAppRoleVO.java

@@ -0,0 +1,82 @@
+package com.fs.app.vo;
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class FsAppRoleVO {
+    private Long id;
+
+    /** APP角色名称 */
+    private String roleName;
+
+    /** 注册奖励类型:1-红包 2-积分 3-商品 */
+    private Integer registerRewardType;
+
+    /** 注册-红包金额 */
+    private BigDecimal registerRedPacket;
+
+    /** 注册-商品 */
+    private Long registerProductId;
+
+    /** 注册商品类型:1-套餐包 2-商城 */
+    private Integer registerProductType;
+
+    /** 注册-积分 */
+    private BigDecimal registerIntegral;
+
+    /** 看课奖励有效天数 */
+    private Long courseDay;
+
+    /** 看课奖励类型:1-红包 2-积分 3-商品 */
+    private Integer courseRewardType;
+
+    /** 看课-红包金额 */
+    private BigDecimal courseRedPacket;
+
+    /** 看课-积分 */
+    private BigDecimal courseIntegral;
+
+    /** 看课商品类型:1-套餐包 2-商城 */
+    private Integer courseProductType;
+
+    /** 看课-商品id */
+    private Long courseProductId;
+
+    /** 看课商品领取所需天数 */
+    private Long courseNeedDay;
+
+    /** 红包/积分规则类型: 1-平均 2-定制 */
+    private Integer courseRewardRuleType;
+
+    /** 红包/积分规则 */
+    private List<Options> courseRewardRule;
+
+    /** 角色等级 */
+    private Long roleLevel;
+
+    /** 角色标签 */
+    private List<String> roleTags;
+
+    /** 角色套餐包id */
+    private List<Long> rolePackageProductIds;
+
+    /** 角色商城商品id */
+    private List<Long> roleStoreProductIds;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    @Data
+    public static class Options implements Serializable {
+        private String day;
+        private Integer amount;
+    }
+}

+ 3 - 0
fs-service/src/main/java/com/fs/his/domain/FsUser.java

@@ -157,6 +157,9 @@ public class FsUser extends BaseEntity
     /** 首次登录注册App时间 */
     private Date firstLoginTime;
 
+    //APP角色(角色id逗号隔开)
+    private String appRoles;
+
     /** app登录后不为null(表示是否下载app) */
     private String historyApp;
     public void setNickName(String nickname)

+ 5 - 0
fs-service/src/main/java/com/fs/his/mapper/FsPackageMapper.java

@@ -70,6 +70,11 @@ public interface FsPackageMapper
     List<OptionsVO> selectAllPackageList();
     @Select("select package_id dictValue,package_name dictLabel from fs_package where is_show = 0 and status = 1 and (product_type = 1 or product_type = 2 or product_type = 3 )  order by sort")
     List<OptionsVO> selectAllPrivatePackageList();
+
+    //APP商品奖品列表
+    @Select("select package_id dictValue,package_name dictLabel from fs_package where  status = 1 order by sort")
+    List<OptionsVO> selectPackageList();
+
     @Select({"<script> " +
             "select * from fs_package "+
             "where 1=1 "+

+ 2 - 0
fs-service/src/main/java/com/fs/his/service/IFsPackageService.java

@@ -95,4 +95,6 @@ public interface IFsPackageService
      * 查询私有套餐包列表
      */
     List<OptionsVO> selectAllPrivatePackageList();
+
+    List<OptionsVO> selectPackageList();
 }

+ 5 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsPackageServiceImpl.java

@@ -349,5 +349,10 @@ public class FsPackageServiceImpl implements IFsPackageService {
     public List<OptionsVO> selectAllPrivatePackageList() {
         return fsPackageMapper.selectAllPrivatePackageList();
     }
+
+    @Override
+    public List<OptionsVO> selectPackageList() {
+        return fsPackageMapper.selectPackageList();
+    }
 }
 

+ 3 - 0
fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreProductScrmMapper.java

@@ -410,4 +410,7 @@ public interface FsStoreProductScrmMapper
     List<FsStoreProductScrm> bulkCopyFsStoreProductByIds(Long[] productIds);
 
     List<FsStoreProductScrm> getStoreProductInProductIds(List<Long> productIds);
+
+    @Select("SELECT product_id dictValue,product_name dictLabel  FROM fs_store_product_scrm WHERE is_show = 1 ")
+    List<OptionsVO> selectProductOptions();
 }

+ 2 - 0
fs-service/src/main/java/com/fs/hisStore/service/IFsStoreProductScrmService.java

@@ -140,4 +140,6 @@ public interface IFsStoreProductScrmService
     R bulkCopyFsStoreProductByIds(Long[] productIds);
 
     List<FsStoreProductScrm> getStoreProductInProductIds(List<Long> storeProductIds);
+
+    List<OptionsVO> selectProductOptions();
 }

+ 5 - 0
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreProductScrmServiceImpl.java

@@ -1152,4 +1152,9 @@ public class FsStoreProductScrmServiceImpl implements IFsStoreProductScrmService
     public List<FsStoreProductScrm> getStoreProductInProductIds(List<Long> productIds) {
         return fsStoreProductMapper.getStoreProductInProductIds(productIds);
     }
+
+    @Override
+    public List<OptionsVO> selectProductOptions() {
+        return fsStoreProductMapper.selectProductOptions();
+    }
 }

+ 4 - 0
fs-service/src/main/java/com/fs/qw/mapper/QwTagMapper.java

@@ -1,5 +1,6 @@
 package com.fs.qw.mapper;
 
+import com.fs.his.vo.OptionsVO;
 import com.fs.qw.domain.QwTag;
 import com.fs.qw.param.QwTagSearchParam;
 import com.fs.qw.param.newparam.ContactTagListParam;
@@ -105,4 +106,7 @@ public interface QwTagMapper
             "</script>")
     List<ExternalContactTagVO> selectQwTagListByTagIds(@Param("tagIds") List<String> tagIds);
 
+    @Select("SELECT tag_id ,name   FROM qw_tag")
+    List<ExternalContactTagVO> selectQwTagListOptions();
+
 }

+ 4 - 0
fs-service/src/main/java/com/fs/qw/service/IQwTagService.java

@@ -1,5 +1,6 @@
 package com.fs.qw.service;
 
+import com.fs.his.vo.OptionsVO;
 import com.fs.qw.domain.QwTag;
 import com.fs.qw.domain.QwUser;
 import com.fs.qw.param.QwTagParam;
@@ -7,6 +8,7 @@ import com.fs.qw.param.QwTagSearchParam;
 import com.fs.qw.param.newparam.ContactTagListParam;
 import com.fs.qw.vo.QwTagGroupListVO;
 import com.fs.qw.vo.QwTagVO;
+import com.fs.qw.vo.sidebar.ExternalContactTagVO;
 
 import java.util.List;
 
@@ -72,4 +74,6 @@ public interface IQwTagService
     public List<String> selectQwTagListByTagIds(QwTagSearchParam param);
 
     List<QwTagVO> getTagListByUserId(ContactTagListParam param);
+
+    List<ExternalContactTagVO> selectQwTagListOptions();
 }

+ 7 - 0
fs-service/src/main/java/com/fs/qw/service/impl/QwTagServiceImpl.java

@@ -2,6 +2,7 @@ package com.fs.qw.service.impl;
 
 import com.fs.common.utils.DateUtils;
 import com.fs.common.utils.StringUtils;
+import com.fs.his.vo.OptionsVO;
 import com.fs.qw.domain.QwExternalContact;
 import com.fs.qw.domain.QwTag;
 import com.fs.qw.domain.QwUser;
@@ -14,6 +15,7 @@ import com.fs.qw.param.newparam.ContactTagListParam;
 import com.fs.qw.service.IQwTagService;
 import com.fs.qw.vo.QwTagGroupListVO;
 import com.fs.qw.vo.QwTagVO;
+import com.fs.qw.vo.sidebar.ExternalContactTagVO;
 import com.fs.qwApi.domain.QwResult;
 import com.fs.qwApi.param.QwEditUserTagParam;
 import com.fs.qwApi.service.QwApiService;
@@ -208,4 +210,9 @@ public class QwTagServiceImpl implements IQwTagService
         }
         return qwTagMapper.selectTagListByUserId(param, keywords);
     }
+
+    @Override
+    public List<ExternalContactTagVO> selectQwTagListOptions() {
+        return qwTagMapper.selectQwTagListOptions();
+    }
 }

+ 154 - 0
fs-service/src/main/resources/mapper/app/FsAppRoleMapper.xml

@@ -0,0 +1,154 @@
+<?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.fs.app.mapper.FsAppRoleMapper">
+    
+    <resultMap type="FsAppRole" id="FsAppRoleResult">
+        <result property="id"    column="id"    />
+        <result property="roleName"    column="role_name"    />
+        <result property="registerRewardType"    column="register_reward_type"    />
+        <result property="registerRedPacket"    column="register_red_packet"    />
+        <result property="registerProductId"    column="register_product_id"    />
+        <result property="registerProductType"    column="register_product_type"    />
+        <result property="registerIntegral"    column="register_integral"    />
+        <result property="courseDay"    column="course_day"    />
+        <result property="courseRewardType"    column="course_reward_type"    />
+        <result property="courseRedPacket"    column="course_red_packet"    />
+        <result property="courseIntegral"    column="course_integral"    />
+        <result property="courseProductType"    column="course_product_type"    />
+        <result property="courseProductId"    column="course_product_id"    />
+        <result property="courseNeedDay"    column="course_need_day"    />
+        <result property="courseRewardRuleType"    column="course_reward_rule_type"    />
+        <result property="courseRewardRule"    column="course_reward_rule"    />
+        <result property="roleLevel"    column="role_level"    />
+        <result property="roleTags"    column="role_tags"    />
+        <result property="rolePackageProductIds"    column="role_package_product_ids"    />
+        <result property="roleStoreProductIds"    column="role_store_product_ids"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateTime"    column="update_time"    />
+    </resultMap>
+
+    <sql id="selectFsAppRoleVo">
+        select id, role_name, register_reward_type, register_red_packet, register_product_id, register_product_type, register_integral, course_day, course_reward_type, course_red_packet, course_integral, course_product_type, course_product_id, course_need_day, course_reward_rule_type, course_reward_rule, role_level, role_tags, role_package_product_ids, role_store_product_ids, create_time, update_time from fs_app_role
+    </sql>
+
+    <select id="selectFsAppRoleList" parameterType="FsAppRole" resultMap="FsAppRoleResult">
+        <include refid="selectFsAppRoleVo"/>
+        <where>  
+            <if test="roleName != null  and roleName != ''"> and role_name like concat('%', #{roleName}, '%')</if>
+            <if test="registerRewardType != null  and registerRewardType != ''"> and register_reward_type = #{registerRewardType}</if>
+            <if test="registerRedPacket != null "> and register_red_packet = #{registerRedPacket}</if>
+            <if test="registerProductId != null "> and register_product_id = #{registerProductId}</if>
+            <if test="registerProductType != null "> and register_product_type = #{registerProductType}</if>
+            <if test="registerIntegral != null "> and register_integral = #{registerIntegral}</if>
+            <if test="courseDay != null "> and course_day = #{courseDay}</if>
+            <if test="courseRewardType != null "> and course_reward_type = #{courseRewardType}</if>
+            <if test="courseRedPacket != null "> and course_red_packet = #{courseRedPacket}</if>
+            <if test="courseIntegral != null "> and course_integral = #{courseIntegral}</if>
+            <if test="courseProductType != null "> and course_product_type = #{courseProductType}</if>
+            <if test="courseProductId != null "> and course_product_id = #{courseProductId}</if>
+            <if test="courseNeedDay != null "> and course_need_day = #{courseNeedDay}</if>
+            <if test="courseRewardRuleType != null "> and course_reward_rule_type = #{courseRewardRuleType}</if>
+            <if test="courseRewardRule != null  and courseRewardRule != ''"> and course_reward_rule = #{courseRewardRule}</if>
+            <if test="roleLevel != null "> and role_level = #{roleLevel}</if>
+            <if test="roleTags != null  and roleTags != ''"> and role_tags = #{roleTags}</if>
+            <if test="rolePackageProductIds != null  and rolePackageProductIds != ''"> and role_package_product_ids = #{rolePackageProductIds}</if>
+            <if test="roleStoreProductIds != null  and roleStoreProductIds != ''"> and role_store_product_ids = #{roleStoreProductIds}</if>
+        </where>
+    </select>
+    
+    <select id="selectFsAppRoleById" parameterType="Long" resultMap="FsAppRoleResult">
+        <include refid="selectFsAppRoleVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertFsAppRole" parameterType="FsAppRole" useGeneratedKeys="true" keyProperty="id">
+        insert into fs_app_role
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="roleName != null">role_name,</if>
+            <if test="registerRewardType != null">register_reward_type,</if>
+            <if test="registerRedPacket != null">register_red_packet,</if>
+            <if test="registerProductId != null">register_product_id,</if>
+            <if test="registerProductType != null">register_product_type,</if>
+            <if test="registerIntegral != null">register_integral,</if>
+            <if test="courseDay != null">course_day,</if>
+            <if test="courseRewardType != null">course_reward_type,</if>
+            <if test="courseRedPacket != null">course_red_packet,</if>
+            <if test="courseIntegral != null">course_integral,</if>
+            <if test="courseProductType != null">course_product_type,</if>
+            <if test="courseProductId != null">course_product_id,</if>
+            <if test="courseNeedDay != null">course_need_day,</if>
+            <if test="courseRewardRuleType != null">course_reward_rule_type,</if>
+            <if test="courseRewardRule != null">course_reward_rule,</if>
+            <if test="roleLevel != null">role_level,</if>
+            <if test="roleTags != null">role_tags,</if>
+            <if test="rolePackageProductIds != null">role_package_product_ids,</if>
+            <if test="roleStoreProductIds != null">role_store_product_ids,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateTime != null">update_time,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="roleName != null">#{roleName},</if>
+            <if test="registerRewardType != null">#{registerRewardType},</if>
+            <if test="registerRedPacket != null">#{registerRedPacket},</if>
+            <if test="registerProductId != null">#{registerProductId},</if>
+            <if test="registerProductType != null">#{registerProductType},</if>
+            <if test="registerIntegral != null">#{registerIntegral},</if>
+            <if test="courseDay != null">#{courseDay},</if>
+            <if test="courseRewardType != null">#{courseRewardType},</if>
+            <if test="courseRedPacket != null">#{courseRedPacket},</if>
+            <if test="courseIntegral != null">#{courseIntegral},</if>
+            <if test="courseProductType != null">#{courseProductType},</if>
+            <if test="courseProductId != null">#{courseProductId},</if>
+            <if test="courseNeedDay != null">#{courseNeedDay},</if>
+            <if test="courseRewardRuleType != null">#{courseRewardRuleType},</if>
+            <if test="courseRewardRule != null">#{courseRewardRule},</if>
+            <if test="roleLevel != null">#{roleLevel},</if>
+            <if test="roleTags != null">#{roleTags},</if>
+            <if test="rolePackageProductIds != null">#{rolePackageProductIds},</if>
+            <if test="roleStoreProductIds != null">#{roleStoreProductIds},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+         </trim>
+    </insert>
+
+    <update id="updateFsAppRole" parameterType="FsAppRole">
+        update fs_app_role
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="roleName != null">role_name = #{roleName},</if>
+            <if test="registerRewardType != null">register_reward_type = #{registerRewardType},</if>
+            <if test="registerRedPacket != null">register_red_packet = #{registerRedPacket},</if>
+            <if test="registerProductId != null">register_product_id = #{registerProductId},</if>
+            <if test="registerProductType != null">register_product_type = #{registerProductType},</if>
+            <if test="registerIntegral != null">register_integral = #{registerIntegral},</if>
+            <if test="courseDay != null">course_day = #{courseDay},</if>
+            <if test="courseRewardType != null">course_reward_type = #{courseRewardType},</if>
+            <if test="courseRedPacket != null">course_red_packet = #{courseRedPacket},</if>
+            <if test="courseIntegral != null">course_integral = #{courseIntegral},</if>
+            <if test="courseProductType != null">course_product_type = #{courseProductType},</if>
+            <if test="courseProductId != null">course_product_id = #{courseProductId},</if>
+            <if test="courseNeedDay != null">course_need_day = #{courseNeedDay},</if>
+            <if test="courseRewardRuleType != null">course_reward_rule_type = #{courseRewardRuleType},</if>
+            <if test="courseRewardRule != null">course_reward_rule = #{courseRewardRule},</if>
+            <if test="roleLevel != null">role_level = #{roleLevel},</if>
+            <if test="roleTags != null">role_tags = #{roleTags},</if>
+            <if test="rolePackageProductIds != null">role_package_product_ids = #{rolePackageProductIds},</if>
+            <if test="roleStoreProductIds != null">role_store_product_ids = #{roleStoreProductIds},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteFsAppRoleById" parameterType="Long">
+        delete from fs_app_role where id = #{id}
+    </delete>
+
+    <delete id="deleteFsAppRoleByIds" parameterType="String">
+        delete from fs_app_role where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 5 - 1
fs-service/src/main/resources/mapper/his/FsUserMapper.xml

@@ -49,10 +49,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="qwExtId"    column="qw_ext_id"    />
         <result property="qwUserId"    column="qw_user_id"    />
         <result property="firstLoginTime"    column="first_login_time"    />
+        <result property="appRoles"    column="app_roles"    />
     </resultMap>
 
     <sql id="selectFsUserVo">
-        select user_id,qw_ext_id,sex,is_buy,course_ma_open_id,is_push,is_add_qw,source,login_device,is_individuation_push,store_open_id,password,jpush_id, is_vip,vip_start_date,vip_end_date,vip_level,vip_status,nick_name,integral_status, avatar, phone, integral,sign_num, status, tui_user_id, tui_time, tui_user_count, ma_open_id, mp_open_id, union_id, is_del, user_code, remark, create_time, update_time, last_ip, balance,is_weixin_auth,parent_id,qw_user_id,company_id,company_user_id,first_login_time from fs_user
+        select user_id,qw_ext_id,sex,is_buy,course_ma_open_id,is_push,is_add_qw,source,login_device,is_individuation_push,store_open_id,password,jpush_id, is_vip,vip_start_date,vip_end_date,vip_level,vip_status,nick_name,integral_status, avatar, phone, integral,sign_num, status, tui_user_id, tui_time, tui_user_count, ma_open_id, mp_open_id, union_id, is_del, user_code, remark, create_time, update_time, last_ip, balance,is_weixin_auth,parent_id,qw_user_id,company_id,company_user_id,first_login_time,app_roles from fs_user
     </sql>
 
     <select id="selectFsUserList" parameterType="FsUser" resultMap="FsUserResult">
@@ -608,6 +609,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="orderCount != null">order_count,</if>
             <if test="companyUserId != null">company_user_id,</if>
             <if test="firstLoginTime != null">first_login_time,</if>
+            <if test="appRoles != null">app_roles,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="nickName != null">#{nickName},</if>
@@ -652,6 +654,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="orderCount != null">#{orderCount},</if>
             <if test="companyUserId != null">#{companyUserId},</if>
             <if test="firstLoginTime != null">#{firstLoginTime},</if>
+            <if test="appRoles != null">#{appRoles},</if>
          </trim>
     </insert>
 
@@ -702,6 +705,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="companyId != null">company_id = #{companyId},</if>
             <if test="companyUserId != null">company_user_id = #{companyUserId},</if>
             <if test="firstLoginTime != null">first_login_time = #{firstLoginTime},</if>
+            <if test="appRoles != null">app_roles = #{appRoles},</if>
         </trim>
         where user_id = #{userId}
     </update>