吴树波 1 개월 전
부모
커밋
3b25c803f3
23개의 변경된 파일1069개의 추가작업 그리고 185개의 파일을 삭제
  1. 144 0
      fs-company/src/main/java/com/fs/company/controller/CompanyRedPackageLogsController.java
  2. 5 5
      fs-service-generator/src/main/resources/vm/java/controller.java.vm
  3. 10 37
      fs-service-generator/src/main/resources/vm/java/domain.java.vm
  4. 41 11
      fs-service-generator/src/main/resources/vm/java/mapper.java.vm
  5. 11 11
      fs-service-generator/src/main/resources/vm/java/service.java.vm
  6. 72 16
      fs-service-generator/src/main/resources/vm/java/serviceImpl.java.vm
  7. 6 6
      fs-service-generator/src/main/resources/vm/sql/sql.vm
  8. 83 46
      fs-service-generator/src/main/resources/vm/vue/index-tree.vue.vm
  9. 158 47
      fs-service-generator/src/main/resources/vm/vue/index.vue.vm
  10. 43 3
      fs-service-generator/src/main/resources/vm/xml/mapper.xml.vm
  11. 8 0
      fs-service-system/src/main/java/com/fs/company/domain/Company.java
  12. 71 0
      fs-service-system/src/main/java/com/fs/company/domain/CompanyRedPackageLogs.java
  13. 1 0
      fs-service-system/src/main/java/com/fs/company/mapper/CompanyMapper.java
  14. 61 0
      fs-service-system/src/main/java/com/fs/company/mapper/CompanyRedPackageLogsMapper.java
  15. 68 0
      fs-service-system/src/main/java/com/fs/company/service/ICompanyRedPackageLogsService.java
  16. 2 0
      fs-service-system/src/main/java/com/fs/company/service/ICompanyService.java
  17. 141 0
      fs-service-system/src/main/java/com/fs/company/service/impl/CompanyRedPackageLogsServiceImpl.java
  18. 6 0
      fs-service-system/src/main/java/com/fs/company/service/impl/CompanyServiceImpl.java
  19. 2 0
      fs-service-system/src/main/java/com/fs/course/config/CourseConfig.java
  20. 1 0
      fs-service-system/src/main/java/com/fs/sop/params/SendSopParamDetailsC.java
  21. 2 0
      fs-service-system/src/main/java/com/fs/sop/service/impl/QwSopLogsServiceImpl.java
  22. 6 3
      fs-service-system/src/main/resources/mapper/company/CompanyMapper.xml
  23. 127 0
      fs-service-system/src/main/resources/mapper/company/CompanyRedPackageLogsMapper.xml

+ 144 - 0
fs-company/src/main/java/com/fs/company/controller/CompanyRedPackageLogsController.java

@@ -0,0 +1,144 @@
+package com.fs.company.controller;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+import com.fs.common.core.domain.R;
+import com.fs.common.utils.ServletUtils;
+import com.fs.company.domain.CompanyUser;
+import com.fs.core.security.LoginUser;
+import com.fs.core.web.service.TokenService;
+import com.fs.system.domain.SysConfig;
+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.company.domain.CompanyRedPackageLogs;
+import com.fs.company.service.ICompanyRedPackageLogsService;
+import com.fs.common.utils.poi.ExcelUtil;
+import com.fs.common.core.page.TableDataInfo;
+
+/**
+ * 公司红包余额日志Controller
+ * 
+ * @author 吴树波
+ * @date 2025-04-15
+ */
+@RestController
+@RequestMapping("/company/CompanyRedPackageLogs")
+public class CompanyRedPackageLogsController extends BaseController
+{
+    @Autowired
+    private ICompanyRedPackageLogsService companyRedPackageLogsService;
+    @Autowired
+    private TokenService tokenService;
+
+    /**
+     * 查询公司红包余额日志列表
+     */
+    @PreAuthorize("@ss.hasPermi('company:CompanyRedPackageLogs:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(CompanyRedPackageLogs companyRedPackageLogs)
+    {
+        startPage();
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        CompanyUser user = loginUser.getUser();
+        companyRedPackageLogs.setCompanyId(user.getCompanyId());
+        List<CompanyRedPackageLogs> list = companyRedPackageLogsService.selectCompanyRedPackageLogsList(companyRedPackageLogs);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出公司红包余额日志列表
+     */
+    @PreAuthorize("@ss.hasPermi('company:CompanyRedPackageLogs:export')")
+    @Log(title = "公司红包余额日志", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(CompanyRedPackageLogs companyRedPackageLogs)
+    {
+        List<CompanyRedPackageLogs> list = companyRedPackageLogsService.selectCompanyRedPackageLogsList(companyRedPackageLogs);
+        ExcelUtil<CompanyRedPackageLogs> util = new ExcelUtil<CompanyRedPackageLogs>(CompanyRedPackageLogs.class);
+        return util.exportExcel(list, "公司红包余额日志数据");
+    }
+
+    /**
+     * 获取公司红包余额日志详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('company:CompanyRedPackageLogs:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(companyRedPackageLogsService.selectCompanyRedPackageLogsById(id));
+    }
+
+    /**
+     * 新增公司红包余额日志
+     */
+    @PreAuthorize("@ss.hasPermi('company:CompanyRedPackageLogs:add')")
+    @Log(title = "公司红包余额日志", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody CompanyRedPackageLogs companyRedPackageLogs)
+    {
+        return toAjax(companyRedPackageLogsService.insertCompanyRedPackageLogs(companyRedPackageLogs));
+    }
+
+    /**
+     * 修改公司红包余额日志
+     */
+    @PreAuthorize("@ss.hasPermi('company:CompanyRedPackageLogs:edit')")
+    @Log(title = "公司红包余额日志", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody CompanyRedPackageLogs companyRedPackageLogs)
+    {
+        return toAjax(companyRedPackageLogsService.updateCompanyRedPackageLogs(companyRedPackageLogs));
+    }
+
+    /**
+     * 删除公司红包余额日志
+     */
+    @PreAuthorize("@ss.hasPermi('company:CompanyRedPackageLogs:remove')")
+    @Log(title = "公司红包余额日志", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(companyRedPackageLogsService.deleteCompanyRedPackageLogsByIds(ids));
+    }
+
+    /**
+     * 删除公司红包余额日志
+     */
+    @PreAuthorize("@ss.hasPermi('company:CompanyRedPackageLogs:add')")
+    @Log(title = "充值余额", businessType = BusinessType.INSERT)
+	@PostMapping("/recharge")
+    public R recharge(@RequestBody CompanyRedPackageLogs companyRedPackageLogs){
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        CompanyUser user = loginUser.getUser();
+        companyRedPackageLogs.setCompanyId(user.getCompanyId());
+        companyRedPackageLogs.setCreateBy(user.getUserId().toString());
+        companyRedPackageLogsService.recharge(companyRedPackageLogs);
+        return R.ok();
+    }
+
+
+
+    @GetMapping(value = "/getMoneyPri")
+    public R getMoneyPri(){
+        return R.ok().put("data", companyRedPackageLogsService.getMoneyPri());
+    }
+    // 充值审核
+    @PostMapping(value = "/rew")
+    public R rew(@RequestBody CompanyRedPackageLogs companyRedPackageLogs){
+        companyRedPackageLogsService.rew(companyRedPackageLogs);
+        return R.ok();
+    }
+}

+ 5 - 5
fs-service-generator/src/main/resources/vm/java/controller.java.vm

@@ -18,7 +18,7 @@ import com.fs.common.enums.BusinessType;
 import ${packageName}.domain.${ClassName};
 import ${packageName}.service.I${ClassName}Service;
 import com.fs.common.utils.poi.ExcelUtil;
-#if($table.crud)
+#if($table.crud || $table.sub)
 import com.fs.common.core.page.TableDataInfo;
 #elseif($table.tree)
 #end
@@ -41,7 +41,7 @@ public class ${ClassName}Controller extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('${permissionPrefix}:list')")
     @GetMapping("/list")
-#if($table.crud)
+#if($table.crud || $table.sub)
     public TableDataInfo list(${ClassName} ${className})
     {
         startPage();
@@ -66,7 +66,7 @@ public class ${ClassName}Controller extends BaseController
     {
         List<${ClassName}> list = ${className}Service.select${ClassName}List(${className});
         ExcelUtil<${ClassName}> util = new ExcelUtil<${ClassName}>(${ClassName}.class);
-        return util.exportExcel(list, "${businessName}");
+        return util.exportExcel(list, "${functionName}数据");
     }
 
     /**
@@ -76,7 +76,7 @@ public class ${ClassName}Controller extends BaseController
     @GetMapping(value = "/{${pkColumn.javaField}}")
     public AjaxResult getInfo(@PathVariable("${pkColumn.javaField}") ${pkColumn.javaType} ${pkColumn.javaField})
     {
-        return AjaxResult.success(${className}Service.select${ClassName}ById(${pkColumn.javaField}));
+        return AjaxResult.success(${className}Service.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField}));
     }
 
     /**
@@ -109,6 +109,6 @@ public class ${ClassName}Controller extends BaseController
 	@DeleteMapping("/{${pkColumn.javaField}s}")
     public AjaxResult remove(@PathVariable ${pkColumn.javaType}[] ${pkColumn.javaField}s)
     {
-        return toAjax(${className}Service.delete${ClassName}ByIds(${pkColumn.javaField}s));
+        return toAjax(${className}Service.delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaField}s));
     }
 }

+ 10 - 37
fs-service-generator/src/main/resources/vm/java/domain.java.vm

@@ -3,25 +3,29 @@ package ${packageName}.domain;
 #foreach ($import in $importList)
 import ${import};
 #end
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.fs.common.annotation.Excel;
-#if($table.crud)
+import lombok.Data;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.EqualsAndHashCode;
+#if($table.crud || $table.sub)
 #elseif($table.tree)
 #end
 
 /**
  * ${functionName}对象 ${tableName}
- * 
+ *
  * @author ${author}
  * @date ${datetime}
  */
-#if($table.crud)
+#if($table.crud || $table.sub)
 #set($Entity="BaseEntity")
 #elseif($table.tree)
 #set($Entity="TreeEntity")
 #end
-public class ${ClassName} extends ${Entity}
-{
-    private static final long serialVersionUID = 1L;
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ${ClassName} extends ${Entity}{
 
 #foreach ($column in $columns)
 #if(!$table.isSuperColumn($column.javaField))
@@ -46,36 +50,5 @@ public class ${ClassName} extends ${Entity}
 
 #end
 #end
-#foreach ($column in $columns)
-#if(!$table.isSuperColumn($column.javaField))
-#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
-#set($AttrName=$column.javaField)
-#else
-#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
-#end
-    public void set${AttrName}($column.javaType $column.javaField) 
-    {
-        this.$column.javaField = $column.javaField;
-    }
 
-    public $column.javaType get${AttrName}() 
-    {
-        return $column.javaField;
-    }
-#end
-#end
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-#foreach ($column in $columns)
-#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
-#set($AttrName=$column.javaField)
-#else
-#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
-#end
-            .append("${column.javaField}", get${AttrName}())
-#end
-            .toString();
-    }
 }

+ 41 - 11
fs-service-generator/src/main/resources/vm/java/mapper.java.vm

@@ -1,7 +1,11 @@
 package ${packageName}.mapper;
 
 import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import ${packageName}.domain.${ClassName};
+#if($table.sub)
+import ${packageName}.domain.${subClassName};
+#end
 
 /**
  * ${functionName}Mapper接口
@@ -9,15 +13,14 @@ import ${packageName}.domain.${ClassName};
  * @author ${author}
  * @date ${datetime}
  */
-public interface ${ClassName}Mapper 
-{
+public interface ${ClassName}Mapper extends BaseMapper<${ClassName}>{
     /**
      * 查询${functionName}
      * 
-     * @param ${pkColumn.javaField} ${functionName}ID
+     * @param ${pkColumn.javaField} ${functionName}主键
      * @return ${functionName}
      */
-    public ${ClassName} select${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField});
+    ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
 
     /**
      * 查询${functionName}列表
@@ -25,7 +28,7 @@ public interface ${ClassName}Mapper
      * @param ${className} ${functionName}
      * @return ${functionName}集合
      */
-    public List<${ClassName}> select${ClassName}List(${ClassName} ${className});
+    List<${ClassName}> select${ClassName}List(${ClassName} ${className});
 
     /**
      * 新增${functionName}
@@ -33,7 +36,7 @@ public interface ${ClassName}Mapper
      * @param ${className} ${functionName}
      * @return 结果
      */
-    public int insert${ClassName}(${ClassName} ${className});
+    int insert${ClassName}(${ClassName} ${className});
 
     /**
      * 修改${functionName}
@@ -41,21 +44,48 @@ public interface ${ClassName}Mapper
      * @param ${className} ${functionName}
      * @return 结果
      */
-    public int update${ClassName}(${ClassName} ${className});
+    int update${ClassName}(${ClassName} ${className});
 
     /**
      * 删除${functionName}
      * 
-     * @param ${pkColumn.javaField} ${functionName}ID
+     * @param ${pkColumn.javaField} ${functionName}主键
      * @return 结果
      */
-    public int delete${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField});
+    int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
 
     /**
      * 批量删除${functionName}
      * 
-     * @param ${pkColumn.javaField}s 需要删除的数据ID
+     * @param ${pkColumn.javaField}s 需要删除的数据主键集合
+     * @return 结果
+     */
+    int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);
+#if($table.sub)
+
+    /**
+     * 批量删除${subTable.functionName}
+     * 
+     * @param ${pkColumn.javaField}s 需要删除的数据主键集合
+     * @return 结果
+     */
+    int delete${subClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);
+    
+    /**
+     * 批量新增${subTable.functionName}
+     * 
+     * @param ${subclassName}List ${subTable.functionName}列表
+     * @return 结果
+     */
+    int batch${subClassName}(List<${subClassName}> ${subclassName}List);
+    
+
+    /**
+     * 通过${functionName}主键删除${subTable.functionName}信息
+     * 
+     * @param ${pkColumn.javaField} ${functionName}ID
      * @return 结果
      */
-    public int delete${ClassName}ByIds(${pkColumn.javaType}[] ${pkColumn.javaField}s);
+    int delete${subClassName}By${subTableFkClassName}(${pkColumn.javaType} ${pkColumn.javaField});
+#end
 }

+ 11 - 11
fs-service-generator/src/main/resources/vm/java/service.java.vm

@@ -1,6 +1,7 @@
 package ${packageName}.service;
 
 import java.util.List;
+import com.baomidou.mybatisplus.extension.service.IService;
 import ${packageName}.domain.${ClassName};
 
 /**
@@ -9,15 +10,14 @@ import ${packageName}.domain.${ClassName};
  * @author ${author}
  * @date ${datetime}
  */
-public interface I${ClassName}Service 
-{
+public interface I${ClassName}Service extends IService<${ClassName}>{
     /**
      * 查询${functionName}
      * 
-     * @param ${pkColumn.javaField} ${functionName}ID
+     * @param ${pkColumn.javaField} ${functionName}主键
      * @return ${functionName}
      */
-    public ${ClassName} select${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField});
+    ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
 
     /**
      * 查询${functionName}列表
@@ -25,7 +25,7 @@ public interface I${ClassName}Service
      * @param ${className} ${functionName}
      * @return ${functionName}集合
      */
-    public List<${ClassName}> select${ClassName}List(${ClassName} ${className});
+    List<${ClassName}> select${ClassName}List(${ClassName} ${className});
 
     /**
      * 新增${functionName}
@@ -33,7 +33,7 @@ public interface I${ClassName}Service
      * @param ${className} ${functionName}
      * @return 结果
      */
-    public int insert${ClassName}(${ClassName} ${className});
+    int insert${ClassName}(${ClassName} ${className});
 
     /**
      * 修改${functionName}
@@ -41,21 +41,21 @@ public interface I${ClassName}Service
      * @param ${className} ${functionName}
      * @return 结果
      */
-    public int update${ClassName}(${ClassName} ${className});
+    int update${ClassName}(${ClassName} ${className});
 
     /**
      * 批量删除${functionName}
      * 
-     * @param ${pkColumn.javaField}s 需要删除的${functionName}ID
+     * @param ${pkColumn.javaField}s 需要删除的${functionName}主键集合
      * @return 结果
      */
-    public int delete${ClassName}ByIds(${pkColumn.javaType}[] ${pkColumn.javaField}s);
+    int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);
 
     /**
      * 删除${functionName}信息
      * 
-     * @param ${pkColumn.javaField} ${functionName}ID
+     * @param ${pkColumn.javaField} ${functionName}主键
      * @return 结果
      */
-    public int delete${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField});
+    int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
 }

+ 72 - 16
fs-service-generator/src/main/resources/vm/java/serviceImpl.java.vm

@@ -7,8 +7,16 @@ import com.fs.common.utils.DateUtils;
 #break
 #end
 #end
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+#if($table.sub)
+import java.util.ArrayList;
+import com.fs.common.utils.StringUtils;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.transaction.annotation.Transactional;
+import ${packageName}.domain.${subClassName};
+#end
 import ${packageName}.mapper.${ClassName}Mapper;
 import ${packageName}.domain.${ClassName};
 import ${packageName}.service.I${ClassName}Service;
@@ -20,21 +28,18 @@ import ${packageName}.service.I${ClassName}Service;
  * @date ${datetime}
  */
 @Service
-public class ${ClassName}ServiceImpl implements I${ClassName}Service 
-{
-    @Autowired
-    private ${ClassName}Mapper ${className}Mapper;
+public class ${ClassName}ServiceImpl extends ServiceImpl<${ClassName}Mapper, ${ClassName}> implements I${ClassName}Service {
 
     /**
      * 查询${functionName}
      * 
-     * @param ${pkColumn.javaField} ${functionName}ID
+     * @param ${pkColumn.javaField} ${functionName}主键
      * @return ${functionName}
      */
     @Override
-    public ${ClassName} select${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField})
+    public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField})
     {
-        return ${className}Mapper.select${ClassName}ById(${pkColumn.javaField});
+        return baseMapper.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField});
     }
 
     /**
@@ -46,7 +51,7 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service
     @Override
     public List<${ClassName}> select${ClassName}List(${ClassName} ${className})
     {
-        return ${className}Mapper.select${ClassName}List(${className});
+        return baseMapper.select${ClassName}List(${className});
     }
 
     /**
@@ -55,6 +60,9 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service
      * @param ${className} ${functionName}
      * @return 结果
      */
+#if($table.sub)
+    @Transactional
+#end
     @Override
     public int insert${ClassName}(${ClassName} ${className})
     {
@@ -63,7 +71,13 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service
         ${className}.setCreateTime(DateUtils.getNowDate());
 #end
 #end
-        return ${className}Mapper.insert${ClassName}(${className});
+#if($table.sub)
+        int rows = baseMapper.insert${ClassName}(${className});
+        insert${subClassName}(${className});
+        return rows;
+#else
+        return baseMapper.insert${ClassName}(${className});
+#end
     }
 
     /**
@@ -72,6 +86,9 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service
      * @param ${className} ${functionName}
      * @return 结果
      */
+#if($table.sub)
+    @Transactional
+#end
     @Override
     public int update${ClassName}(${ClassName} ${className})
     {
@@ -80,30 +97,69 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service
         ${className}.setUpdateTime(DateUtils.getNowDate());
 #end
 #end
-        return ${className}Mapper.update${ClassName}(${className});
+#if($table.sub)
+        baseMapper.delete${subClassName}By${subTableFkClassName}(${className}.get${pkColumn.capJavaField}());
+        insert${subClassName}(${className});
+#end
+        return baseMapper.update${ClassName}(${className});
     }
 
     /**
      * 批量删除${functionName}
      * 
-     * @param ${pkColumn.javaField}s 需要删除的${functionName}ID
+     * @param ${pkColumn.javaField}s 需要删除的${functionName}主键
      * @return 结果
      */
+#if($table.sub)
+    @Transactional
+#end
     @Override
-    public int delete${ClassName}ByIds(${pkColumn.javaType}[] ${pkColumn.javaField}s)
+    public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s)
     {
-        return ${className}Mapper.delete${ClassName}ByIds(${pkColumn.javaField}s);
+#if($table.sub)
+        baseMapper.delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaField}s);
+#end
+        return baseMapper.delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaField}s);
     }
 
     /**
      * 删除${functionName}信息
      * 
-     * @param ${pkColumn.javaField} ${functionName}ID
+     * @param ${pkColumn.javaField} ${functionName}主键
      * @return 结果
      */
     @Override
-    public int delete${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField})
+    public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField})
     {
-        return ${className}Mapper.delete${ClassName}ById(${pkColumn.javaField});
+#if($table.sub)
+        baseMapper.delete${subClassName}By${subTableFkClassName}(${pkColumn.javaField});
+#end
+        return baseMapper.delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField});
     }
+#if($table.sub)
+
+    /**
+     * 新增${subTable.functionName}信息
+     * 
+     * @param ${className} ${functionName}对象
+     */
+    public void insert${subClassName}(${ClassName} ${className})
+    {
+        List<${subClassName}> ${subclassName}List = ${className}.get${subClassName}List();
+        ${pkColumn.javaType} ${pkColumn.javaField} = ${className}.get${pkColumn.capJavaField}();
+        if (StringUtils.isNotNull(${subclassName}List))
+        {
+            List<${subClassName}> list = new ArrayList<${subClassName}>();
+            for (${subClassName} ${subclassName} : ${subclassName}List)
+            {
+                ${subclassName}.set${subTableFkClassName}(${pkColumn.javaField});
+                list.add(${subclassName});
+            }
+            if (list.size() > 0)
+            {
+                baseMapper.batch${subClassName}(list);
+            }
+        }
+    }
+#end
 }

+ 6 - 6
fs-service-generator/src/main/resources/vm/sql/sql.vm

@@ -1,22 +1,22 @@
 -- 菜单 SQL
 insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
-values('${functionName}', '${parentMenuId}', '1', '${businessName}', '${moduleName}/${businessName}/index', 1, 0, 'C', '0', '0', '${permissionPrefix}:list', '#', 'admin', '2018-03-01', 'admin', '2018-03-01', '${functionName}菜单');
+values('${functionName}', '${parentMenuId}', '1', '${businessName}', '${moduleName}/${businessName}/index', 1, 0, 'C', '0', '0', '${permissionPrefix}:list', '#', 'admin', sysdate(), '', null, '${functionName}菜单');
 
 -- 按钮父菜单ID
 SELECT @parentId := LAST_INSERT_ID();
 
 -- 按钮 SQL
 insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
-values('${functionName}查询', @parentId, '1',  '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:query',        '#', 'admin', '2018-03-01', 'admin', '2018-03-01', '');
+values('${functionName}查询', @parentId, '1',  '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:query',        '#', 'admin', sysdate(), '', null, '');
 
 insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
-values('${functionName}新增', @parentId, '2',  '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:add',          '#', 'admin', '2018-03-01', 'admin', '2018-03-01', '');
+values('${functionName}新增', @parentId, '2',  '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:add',          '#', 'admin', sysdate(), '', null, '');
 
 insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
-values('${functionName}修改', @parentId, '3',  '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:edit',         '#', 'admin', '2018-03-01', 'admin', '2018-03-01', '');
+values('${functionName}修改', @parentId, '3',  '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:edit',         '#', 'admin', sysdate(), '', null, '');
 
 insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
-values('${functionName}删除', @parentId, '4',  '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:remove',       '#', 'admin', '2018-03-01', 'admin', '2018-03-01', '');
+values('${functionName}删除', @parentId, '4',  '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:remove',       '#', 'admin', sysdate(), '', null, '');
 
 insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
-values('${functionName}导出', @parentId, '5',  '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:export',       '#', 'admin', '2018-03-01', 'admin', '2018-03-01', '');
+values('${functionName}导出', @parentId, '5',  '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:export',       '#', 'admin', sysdate(), '', null, '');

+ 83 - 46
fs-service-generator/src/main/resources/vm/vue/index-tree.vue.vm

@@ -38,20 +38,33 @@
           <el-option label="请选择字典生成" value="" />
         </el-select>
       </el-form-item>
-#elseif($column.htmlType == "datetime")
+#elseif($column.htmlType == "datetime" && $column.queryType != "BETWEEN")
       <el-form-item label="${comment}" prop="${column.javaField}">
-        <el-date-picker clearable size="small" style="width: 200px"
+        <el-date-picker clearable size="small"
           v-model="queryParams.${column.javaField}"
           type="date"
           value-format="yyyy-MM-dd"
           placeholder="选择${comment}">
         </el-date-picker>
       </el-form-item>
+#elseif($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
+      <el-form-item label="${comment}">
+        <el-date-picker
+          v-model="daterange${AttrName}"
+          size="small"
+          style="width: 240px"
+          value-format="yyyy-MM-dd"
+          type="daterange"
+          range-separator="-"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期"
+        ></el-date-picker>
+      </el-form-item>
 #end
 #end
 #end
       <el-form-item>
-	    <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+	    <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
@@ -60,6 +73,7 @@
       <el-col :span="1.5">
         <el-button
           type="primary"
+          plain
           icon="el-icon-plus"
           size="mini"
           @click="handleAdd"
@@ -92,10 +106,18 @@
         </template>
       </el-table-column>
 #elseif($column.list && "" != $column.dictType)
-      <el-table-column label="${comment}" align="center" prop="${javaField}" :formatter="${javaField}Format" />
+      <el-table-column label="${comment}" align="center" prop="${javaField}">
+        <template slot-scope="scope">
+          <dict-tag :options="${javaField}Options" :value="scope.row.${javaField}"/>
+        </template>
+      </el-table-column>
 #elseif($column.list && "" != $javaField)
+#if(${foreach.index} == 1)
+      <el-table-column label="${comment}" prop="${javaField}" />
+#else
       <el-table-column label="${comment}" align="center" prop="${javaField}" />
 #end
+#end
 #end
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
@@ -106,6 +128,13 @@
             @click="handleUpdate(scope.row)"
             v-hasPermi="['${moduleName}:${businessName}:edit']"
           >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-plus"
+            @click="handleAdd(scope.row)"
+            v-hasPermi="['${moduleName}:${businessName}:add']"
+          >新增</el-button>
           <el-button
             size="mini"
             type="text"
@@ -139,6 +168,14 @@
         <el-form-item label="${comment}" prop="${field}">
           <el-input v-model="form.${field}" placeholder="请输入${comment}" />
         </el-form-item>
+#elseif($column.htmlType == "imageUpload")
+        <el-form-item label="${comment}">
+          <imageUpload v-model="form.${field}"/>
+        </el-form-item>
+#elseif($column.htmlType == "fileUpload")
+        <el-form-item label="${comment}">
+          <fileUpload v-model="form.${field}"/>
+        </el-form-item>
 #elseif($column.htmlType == "editor")
         <el-form-item label="${comment}">
           <editor v-model="form.${field}" :min-height="192"/>
@@ -197,7 +234,7 @@
         </el-form-item>
 #elseif($column.htmlType == "datetime")
         <el-form-item label="${comment}" prop="${field}">
-          <el-date-picker clearable size="small" style="width: 200px"
+          <el-date-picker clearable size="small"
             v-model="form.${field}"
             type="date"
             value-format="yyyy-MM-dd"
@@ -225,22 +262,10 @@
 import { list${BusinessName}, get${BusinessName}, del${BusinessName}, add${BusinessName}, update${BusinessName}, export${BusinessName} } from "@/api/${moduleName}/${businessName}";
 import Treeselect from "@riophae/vue-treeselect";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
-#foreach($column in $columns)
-#if($column.insert && !$column.superColumn && !$column.pk && $column.htmlType == "editor")
-import Editor from '@/components/Editor';
-#break
-#end
-#end
 
 export default {
   name: "${BusinessName}",
   components: {
-#foreach($column in $columns)
-#if($column.insert && !$column.superColumn && !$column.pk && $column.htmlType == "editor")
-    Editor,
-#break
-#end
-#end
     Treeselect
   },
   data() {
@@ -267,6 +292,10 @@ export default {
 #if(${column.dictType} != '')
       // $comment字典
       ${column.javaField}Options: [],
+#elseif($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
+#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+      // $comment时间范围
+      daterange${AttrName}: [],
 #end
 #end
       // 查询参数
@@ -313,6 +342,21 @@ export default {
     /** 查询${functionName}列表 */
     getList() {
       this.loading = true;
+#foreach ($column in $columns)
+#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
+      this.queryParams.params = {};
+#break
+#end
+#end
+#foreach ($column in $columns)
+#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
+#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+      if (null != this.daterange${AttrName} && '' != this.daterange${AttrName}) {
+        this.queryParams.params["begin${AttrName}"] = this.daterange${AttrName}[0];
+        this.queryParams.params["end${AttrName}"] = this.daterange${AttrName}[1];
+      }
+#end
+#end
       list${BusinessName}(this.queryParams).then(response => {
         this.${businessName}List = this.handleTree(response.data, "${treeCode}", "${treeParentCode}");
         this.loading = false;
@@ -329,7 +373,7 @@ export default {
         children: node.children
       };
     },
-	/** 查询部门下拉树结构 */
+	/** 查询${functionName}下拉树结构 */
     getTreeselect() {
       list${BusinessName}().then(response => {
         this.${businessName}Options = [];
@@ -338,20 +382,6 @@ export default {
         this.${businessName}Options.push(data);
       });
     },
-#foreach ($column in $columns)
-#if(${column.dictType} != '')
-#set($parentheseIndex=$column.columnComment.indexOf("("))
-#if($parentheseIndex != -1)
-#set($comment=$column.columnComment.substring(0, $parentheseIndex))
-#else
-#set($comment=$column.columnComment)
-#end
-    // $comment字典翻译
-    ${column.javaField}Format(row, column) {
-      return this.selectDictLabel#if($column.htmlType == "checkbox")s#end(this.${column.javaField}Options, row.${column.javaField});
-    },
-#end
-#end
     // 取消按钮
     cancel() {
       this.open = false;
@@ -381,20 +411,31 @@ export default {
     },
     /** 重置按钮操作 */
     resetQuery() {
+#foreach ($column in $columns)
+#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
+#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+      this.daterange${AttrName} = [];
+#end
+#end
       this.resetForm("queryForm");
       this.handleQuery();
     },
     /** 新增按钮操作 */
-    handleAdd() {
+    handleAdd(row) {
       this.reset();
-	  this.getTreeselect();
+      this.getTreeselect();
+      if (row != null && row.${treeCode}) {
+        this.form.${treeParentCode} = row.${treeCode};
+      } else {
+        this.form.${treeParentCode} = 0;
+      }
       this.open = true;
       this.title = "添加${functionName}";
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.reset();
-	  this.getTreeselect();
+      this.getTreeselect();
       if (row != null) {
         this.form.${treeParentCode} = row.${treeCode};
       }
@@ -420,19 +461,15 @@ export default {
 #end
           if (this.form.${pkColumn.javaField} != null) {
             update${BusinessName}(this.form).then(response => {
-              if (response.code === 200) {
-                this.msgSuccess("修改成功");
-                this.open = false;
-                this.getList();
-              }
+              this.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
             });
           } else {
             add${BusinessName}(this.form).then(response => {
-              if (response.code === 200) {
-                this.msgSuccess("新增成功");
-                this.open = false;
-                this.getList();
-              }
+              this.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
             });
           }
         }
@@ -449,7 +486,7 @@ export default {
         }).then(() => {
           this.getList();
           this.msgSuccess("删除成功");
-        }).catch(function() {});
+        }).catch(() => {});
     }
   }
 };

+ 158 - 47
fs-service-generator/src/main/resources/vm/vue/index.vue.vm

@@ -38,20 +38,33 @@
           <el-option label="请选择字典生成" value="" />
         </el-select>
       </el-form-item>
-#elseif($column.htmlType == "datetime")
+#elseif($column.htmlType == "datetime" && $column.queryType != "BETWEEN")
       <el-form-item label="${comment}" prop="${column.javaField}">
-        <el-date-picker clearable size="small" style="width: 200px"
+        <el-date-picker clearable size="small"
           v-model="queryParams.${column.javaField}"
           type="date"
           value-format="yyyy-MM-dd"
           placeholder="选择${comment}">
         </el-date-picker>
       </el-form-item>
+#elseif($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
+      <el-form-item label="${comment}">
+        <el-date-picker
+          v-model="daterange${AttrName}"
+          size="small"
+          style="width: 240px"
+          value-format="yyyy-MM-dd"
+          type="daterange"
+          range-separator="-"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期"
+        ></el-date-picker>
+      </el-form-item>
 #end
 #end
 #end
       <el-form-item>
-        <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
@@ -60,6 +73,7 @@
       <el-col :span="1.5">
         <el-button
           type="primary"
+          plain
           icon="el-icon-plus"
           size="mini"
           @click="handleAdd"
@@ -69,6 +83,7 @@
       <el-col :span="1.5">
         <el-button
           type="success"
+          plain
           icon="el-icon-edit"
           size="mini"
           :disabled="single"
@@ -79,6 +94,7 @@
       <el-col :span="1.5">
         <el-button
           type="danger"
+          plain
           icon="el-icon-delete"
           size="mini"
           :disabled="multiple"
@@ -89,16 +105,18 @@
       <el-col :span="1.5">
         <el-button
           type="warning"
+          plain
           icon="el-icon-download"
           size="mini"
+          :loading="exportLoading"
           @click="handleExport"
           v-hasPermi="['${moduleName}:${businessName}:export']"
         >导出</el-button>
       </el-col>
-	  <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="${businessName}List" @selection-change="handleSelectionChange">
+    <el-table border v-loading="loading" :data="${businessName}List" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
 #foreach($column in $columns)
 #set($javaField=$column.javaField)
@@ -117,7 +135,11 @@
         </template>
       </el-table-column>
 #elseif($column.list && "" != $column.dictType)
-      <el-table-column label="${comment}" align="center" prop="${javaField}" :formatter="${javaField}Format" />
+      <el-table-column label="${comment}" align="center" prop="${javaField}">
+        <template slot-scope="scope">
+          <dict-tag :options="${javaField}Options" :value="scope.row.${javaField}"/>
+        </template>
+      </el-table-column>
 #elseif($column.list && "" != $javaField)
       <el-table-column label="${comment}" align="center" prop="${javaField}" />
 #end
@@ -141,7 +163,7 @@
         </template>
       </el-table-column>
     </el-table>
-    
+
     <pagination
       v-show="total>0"
       :total="total"
@@ -168,6 +190,14 @@
         <el-form-item label="${comment}" prop="${field}">
           <el-input v-model="form.${field}" placeholder="请输入${comment}" />
         </el-form-item>
+#elseif($column.htmlType == "imageUpload")
+        <el-form-item label="${comment}">
+          <imageUpload v-model="form.${field}"/>
+        </el-form-item>
+#elseif($column.htmlType == "fileUpload")
+        <el-form-item label="${comment}">
+          <fileUpload v-model="form.${field}"/>
+        </el-form-item>
 #elseif($column.htmlType == "editor")
         <el-form-item label="${comment}">
           <editor v-model="form.${field}" :min-height="192"/>
@@ -226,7 +256,7 @@
         </el-form-item>
 #elseif($column.htmlType == "datetime")
         <el-form-item label="${comment}" prop="${field}">
-          <el-date-picker clearable size="small" style="width: 200px"
+          <el-date-picker clearable size="small"
             v-model="form.${field}"
             type="date"
             value-format="yyyy-MM-dd"
@@ -240,6 +270,38 @@
 #end
 #end
 #end
+#end
+#if($table.sub)
+        <el-divider content-position="center">${subTable.functionName}信息</el-divider>
+        <el-row :gutter="10" class="mb8">
+          <el-col :span="1.5">
+            <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd${subClassName}">添加</el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button type="danger" icon="el-icon-delete" size="mini" @click="handleDelete${subClassName}">删除</el-button>
+          </el-col>
+        </el-row>
+        <el-table :data="${subclassName}List" :row-class-name="row${subClassName}Index" @selection-change="handle${subClassName}SelectionChange" ref="${subclassName}">
+          <el-table-column type="selection" width="50" align="center" />
+          <el-table-column label="序号" align="center" prop="index" width="50"/>
+#foreach($column in $subTable.columns)
+#set($javaField=$column.javaField)
+#set($parentheseIndex=$column.columnComment.indexOf("("))
+#if($parentheseIndex != -1)
+#set($comment=$column.columnComment.substring(0, $parentheseIndex))
+#else
+#set($comment=$column.columnComment)
+#end
+#if($column.pk || $javaField == ${subTableFkclassName})
+#elseif($column.list && "" != $javaField)
+          <el-table-column label="$comment" prop="${javaField}">
+            <template slot-scope="scope">
+              <el-input v-model="scope.row.$javaField" placeholder="请输入$comment" />
+            </template>
+          </el-table-column>
+#end
+#end
+        </el-table>
 #end
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -252,27 +314,21 @@
 
 <script>
 import { list${BusinessName}, get${BusinessName}, del${BusinessName}, add${BusinessName}, update${BusinessName}, export${BusinessName} } from "@/api/${moduleName}/${businessName}";
-#foreach($column in $columns)
-#if($column.insert && !$column.superColumn && !$column.pk && $column.htmlType == "editor")
-import Editor from '@/components/Editor';
-#break
-#end
-#end
 
 export default {
   name: "${BusinessName}",
-#foreach($column in $columns)
-#if($column.insert && !$column.superColumn && !$column.pk && $column.htmlType == "editor")
-  components: { Editor },
-#break
-#end
-#end
   data() {
     return {
       // 遮罩层
       loading: true,
+      // 导出遮罩层
+      exportLoading: false,
       // 选中数组
       ids: [],
+#if($table.sub)
+      // 子表选中数据
+      checked${subClassName}: [],
+#end
       // 非单个禁用
       single: true,
       // 非多个禁用
@@ -283,6 +339,10 @@ export default {
       total: 0,
       // ${functionName}表格数据
       ${businessName}List: [],
+#if($table.sub)
+      // ${subTable.functionName}表格数据
+      ${subclassName}List: [],
+#end
       // 弹出层标题
       title: "",
       // 是否显示弹出层
@@ -297,6 +357,10 @@ export default {
 #if(${column.dictType} != '')
       // $comment字典
       ${column.javaField}Options: [],
+#elseif($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
+#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+      // $comment时间范围
+      daterange${AttrName}: [],
 #end
 #end
       // 查询参数
@@ -345,26 +409,27 @@ export default {
     /** 查询${functionName}列表 */
     getList() {
       this.loading = true;
+#foreach ($column in $columns)
+#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
+      this.queryParams.params = {};
+#break
+#end
+#end
+#foreach ($column in $columns)
+#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
+#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+      if (null != this.daterange${AttrName} && '' != this.daterange${AttrName}) {
+        this.queryParams.params["begin${AttrName}"] = this.daterange${AttrName}[0];
+        this.queryParams.params["end${AttrName}"] = this.daterange${AttrName}[1];
+      }
+#end
+#end
       list${BusinessName}(this.queryParams).then(response => {
         this.${businessName}List = response.rows;
         this.total = response.total;
         this.loading = false;
       });
     },
-#foreach ($column in $columns)
-#if(${column.dictType} != '')
-#set($parentheseIndex=$column.columnComment.indexOf("("))
-#if($parentheseIndex != -1)
-#set($comment=$column.columnComment.substring(0, $parentheseIndex))
-#else
-#set($comment=$column.columnComment)
-#end
-    // $comment字典翻译
-    ${column.javaField}Format(row, column) {
-      return this.selectDictLabel#if($column.htmlType == "checkbox")s#end(this.${column.javaField}Options, row.${column.javaField});
-    },
-#end
-#end
     // 取消按钮
     cancel() {
       this.open = false;
@@ -386,6 +451,9 @@ export default {
 #end
 #end
       };
+#if($table.sub)
+      this.${subclassName}List = [];
+#end
       this.resetForm("form");
     },
     /** 搜索按钮操作 */
@@ -395,6 +463,12 @@ export default {
     },
     /** 重置按钮操作 */
     resetQuery() {
+#foreach ($column in $columns)
+#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
+#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+      this.daterange${AttrName} = [];
+#end
+#end
       this.resetForm("queryForm");
       this.handleQuery();
     },
@@ -420,6 +494,9 @@ export default {
 #if($column.htmlType == "checkbox")
         this.form.$column.javaField = this.form.${column.javaField}.split(",");
 #end
+#end
+#if($table.sub)
+        this.${subclassName}List = response.data.${subclassName}List;
 #end
         this.open = true;
         this.title = "修改${functionName}";
@@ -433,22 +510,21 @@ export default {
 #if($column.htmlType == "checkbox")
           this.form.$column.javaField = this.form.${column.javaField}.join(",");
 #end
+#end
+#if($table.sub)
+          this.form.${subclassName}List = this.${subclassName}List;
 #end
           if (this.form.${pkColumn.javaField} != null) {
             update${BusinessName}(this.form).then(response => {
-              if (response.code === 200) {
-                this.msgSuccess("修改成功");
-                this.open = false;
-                this.getList();
-              }
+              this.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
             });
           } else {
             add${BusinessName}(this.form).then(response => {
-              if (response.code === 200) {
-                this.msgSuccess("新增成功");
-                this.open = false;
-                this.getList();
-              }
+              this.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
             });
           }
         }
@@ -466,8 +542,41 @@ export default {
         }).then(() => {
           this.getList();
           this.msgSuccess("删除成功");
-        }).catch(function() {});
+        }).catch(() => {});
+    },
+#if($table.sub)
+	/** ${subTable.functionName}序号 */
+    row${subClassName}Index({ row, rowIndex }) {
+      row.index = rowIndex + 1;
+    },
+    /** ${subTable.functionName}添加按钮操作 */
+    handleAdd${subClassName}() {
+      let obj = {};
+#foreach($column in $subTable.columns)
+#if($column.pk || $column.javaField == ${subTableFkclassName})
+#elseif($column.list && "" != $javaField)
+      obj.$column.javaField = "";
+#end
+#end
+      this.${subclassName}List.push(obj);
+    },
+    /** ${subTable.functionName}删除按钮操作 */
+    handleDelete${subClassName}() {
+      if (this.checked${subClassName}.length == 0) {
+        this.msgError("请先选择要删除的${subTable.functionName}数据");
+      } else {
+        const ${subclassName}List = this.${subclassName}List;
+        const checked${subClassName} = this.checked${subClassName};
+        this.${subclassName}List = ${subclassName}List.filter(function(item) {
+          return checked${subClassName}.indexOf(item.index) == -1
+        });
+      }
     },
+    /** 复选框选中数据 */
+    handle${subClassName}SelectionChange(selection) {
+      this.checked${subClassName} = selection.map(item => item.index)
+    },
+#end
     /** 导出按钮操作 */
     handleExport() {
       const queryParams = this.queryParams;
@@ -475,11 +584,13 @@ export default {
           confirmButtonText: "确定",
           cancelButtonText: "取消",
           type: "warning"
-        }).then(function() {
+        }).then(() => {
+          this.exportLoading = true;
           return export${BusinessName}(queryParams);
         }).then(response => {
           this.download(response.msg);
-        }).catch(function() {});
+          this.exportLoading = false;
+        }).catch(() => {});
     }
   }
 };

+ 43 - 3
fs-service-generator/src/main/resources/vm/xml/mapper.xml.vm

@@ -9,6 +9,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="${column.javaField}"    column="${column.columnName}"    />
 #end
     </resultMap>
+#if($table.sub)
+
+    <resultMap id="${ClassName}${subClassName}Result" type="${ClassName}" extends="${ClassName}Result">
+        <collection property="${subclassName}List" notNullColumn="sub_${subTable.pkColumn.columnName}" javaType="java.util.List" resultMap="${subClassName}Result" />
+    </resultMap>
+
+    <resultMap type="${subClassName}" id="${subClassName}Result">
+#foreach ($column in $subTable.columns)
+        <result property="${column.javaField}"    column="sub_${column.columnName}"    />
+#end
+    </resultMap>
+#end
 
     <sql id="select${ClassName}Vo">
         select#foreach($column in $columns) $column.columnName#if($velocityCount != $columns.size()),#end#end from ${tableName}
@@ -46,9 +58,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </where>
     </select>
     
-    <select id="select${ClassName}ById" parameterType="${pkColumn.javaType}" resultMap="${ClassName}Result">
+    <select id="select${ClassName}By${pkColumn.capJavaField}" parameterType="${pkColumn.javaType}" resultMap="#if($table.sub)${ClassName}${subClassName}Result#else${ClassName}Result#end">
+#if($table.crud || $table.tree)
         <include refid="select${ClassName}Vo"/>
         where ${pkColumn.columnName} = #{${pkColumn.javaField}}
+#elseif($table.sub)
+        select#foreach($column in $columns) a.$column.columnName#if($velocityCount != $columns.size()),#end#end,
+           #foreach($column in $subTable.columns) b.$column.columnName as sub_$column.columnName#if($velocityCount != $subTable.columns.size()),#end#end
+
+        from ${tableName} a
+        left join ${subTableName} b on b.${subTableFkName} = a.${pkColumn.columnName}
+        where a.${pkColumn.columnName} = #{${pkColumn.javaField}}
+#end
     </select>
         
     <insert id="insert${ClassName}" parameterType="${ClassName}"#if($pkColumn.increment) useGeneratedKeys="true" keyProperty="$pkColumn.javaField"#end>
@@ -81,15 +102,34 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where ${pkColumn.columnName} = #{${pkColumn.javaField}}
     </update>
 
-    <delete id="delete${ClassName}ById" parameterType="${pkColumn.javaType}">
+    <delete id="delete${ClassName}By${pkColumn.capJavaField}" parameterType="${pkColumn.javaType}">
         delete from ${tableName} where ${pkColumn.columnName} = #{${pkColumn.javaField}}
     </delete>
 
-    <delete id="delete${ClassName}ByIds" parameterType="String">
+    <delete id="delete${ClassName}By${pkColumn.capJavaField}s" parameterType="String">
         delete from ${tableName} where ${pkColumn.columnName} in 
         <foreach item="${pkColumn.javaField}" collection="array" open="(" separator="," close=")">
             #{${pkColumn.javaField}}
         </foreach>
     </delete>
+#if($table.sub)
     
+    <delete id="delete${subClassName}By${subTableFkClassName}s" parameterType="String">
+        delete from ${subTableName} where ${subTableFkName} in 
+        <foreach item="${subTableFkclassName}" collection="array" open="(" separator="," close=")">
+            #{${subTableFkclassName}}
+        </foreach>
+    </delete>
+
+    <delete id="delete${subClassName}By${subTableFkClassName}" parameterType="${pkColumn.javaType}">
+        delete from ${subTableName} where ${subTableFkName} = #{${subTableFkclassName}}
+    </delete>
+
+    <insert id="batch${subClassName}">
+        insert into ${subTableName}(#foreach($column in $subTable.columns) $column.columnName#if($velocityCount != $subTable.columns.size()),#end#end) values
+		<foreach item="item" index="index" collection="list" separator=",">
+            (#foreach($column in $subTable.columns) #{item.$column.javaField}#if($velocityCount != $subTable.columns.size()),#end#end)
+        </foreach>
+    </insert>
+#end
 </mapper>

+ 8 - 0
fs-service-system/src/main/java/com/fs/company/domain/Company.java

@@ -84,6 +84,8 @@ public class Company extends BaseEntity
 
     private String omsCode;
 
+    private BigDecimal redPackageMoney;
+
     public String getOmsCode() {
         return omsCode;
     }
@@ -281,5 +283,11 @@ public class Company extends BaseEntity
         return voiceApiId;
     }
 
+    public BigDecimal getRedPackageMoney() {
+        return redPackageMoney;
+    }
 
+    public void setRedPackageMoney(BigDecimal redPackageMoney) {
+        this.redPackageMoney = redPackageMoney;
+    }
 }

+ 71 - 0
fs-service-system/src/main/java/com/fs/company/domain/CompanyRedPackageLogs.java

@@ -0,0 +1,71 @@
+package com.fs.company.domain;
+
+import java.math.BigDecimal;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+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;
+
+/**
+ * 公司红包余额日志对象 company_red_package_logs
+ *
+ * @author 吴树波
+ * @date 2025-04-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CompanyRedPackageLogs extends BaseEntity{
+
+    /** id */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /** 销售公司 */
+    @Excel(name = "销售公司")
+    private Long companyId;
+
+    /** 操作类型;0充值1发红包 */
+    @Excel(name = "操作类型;0充值1发红包")
+    private Integer operateType;
+
+    /** 类型;0增加1减少 */
+    @Excel(name = "类型;0增加1减少")
+    private Integer type;
+
+    /** 充值金额 */
+    @Excel(name = "充值金额")
+    private BigDecimal upMoney;
+
+    /** 手续费 */
+    @Excel(name = "手续费")
+    private BigDecimal handlMoney;
+
+    /** 手续费比例 */
+    @Excel(name = "手续费比例")
+    private BigDecimal handlPri;
+
+    /** 到账金额 */
+    @Excel(name = "到账金额")
+    private BigDecimal money;
+
+    /** 状态;0待审核1审核通过2审核拒绝 */
+    @Excel(name = "状态;0待审核1审核通过2审核拒绝")
+    private Integer status;
+
+    /** 凭证照片 */
+    @Excel(name = "凭证照片")
+    private String images;
+
+    /** 拒绝愿意 */
+    @Excel(name = "拒绝愿意")
+    private String rejectMemo;
+
+    /** 拒绝图片 */
+    @Excel(name = "拒绝图片")
+    private String rejectImages;
+
+
+}

+ 1 - 0
fs-service-system/src/main/java/com/fs/company/mapper/CompanyMapper.java

@@ -145,4 +145,5 @@ public interface CompanyMapper
     @Select("select company_id dictValue,company_name dictLabel from company")
     List<OptionsVO> selectAllCompanyList();
 
+    void updateMoney(@Param("id") Long id, @Param("money") BigDecimal money);
 }

+ 61 - 0
fs-service-system/src/main/java/com/fs/company/mapper/CompanyRedPackageLogsMapper.java

@@ -0,0 +1,61 @@
+package com.fs.company.mapper;
+
+import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fs.company.domain.CompanyRedPackageLogs;
+
+/**
+ * 公司红包余额日志Mapper接口
+ * 
+ * @author 吴树波
+ * @date 2025-04-15
+ */
+public interface CompanyRedPackageLogsMapper extends BaseMapper<CompanyRedPackageLogs>{
+    /**
+     * 查询公司红包余额日志
+     * 
+     * @param id 公司红包余额日志主键
+     * @return 公司红包余额日志
+     */
+    CompanyRedPackageLogs selectCompanyRedPackageLogsById(Long id);
+
+    /**
+     * 查询公司红包余额日志列表
+     * 
+     * @param companyRedPackageLogs 公司红包余额日志
+     * @return 公司红包余额日志集合
+     */
+    List<CompanyRedPackageLogs> selectCompanyRedPackageLogsList(CompanyRedPackageLogs companyRedPackageLogs);
+
+    /**
+     * 新增公司红包余额日志
+     * 
+     * @param companyRedPackageLogs 公司红包余额日志
+     * @return 结果
+     */
+    int insertCompanyRedPackageLogs(CompanyRedPackageLogs companyRedPackageLogs);
+
+    /**
+     * 修改公司红包余额日志
+     * 
+     * @param companyRedPackageLogs 公司红包余额日志
+     * @return 结果
+     */
+    int updateCompanyRedPackageLogs(CompanyRedPackageLogs companyRedPackageLogs);
+
+    /**
+     * 删除公司红包余额日志
+     * 
+     * @param id 公司红包余额日志主键
+     * @return 结果
+     */
+    int deleteCompanyRedPackageLogsById(Long id);
+
+    /**
+     * 批量删除公司红包余额日志
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    int deleteCompanyRedPackageLogsByIds(Long[] ids);
+}

+ 68 - 0
fs-service-system/src/main/java/com/fs/company/service/ICompanyRedPackageLogsService.java

@@ -0,0 +1,68 @@
+package com.fs.company.service;
+
+import java.math.BigDecimal;
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fs.company.domain.CompanyRedPackageLogs;
+
+/**
+ * 公司红包余额日志Service接口
+ * 
+ * @author 吴树波
+ * @date 2025-04-15
+ */
+public interface ICompanyRedPackageLogsService extends IService<CompanyRedPackageLogs>{
+    /**
+     * 查询公司红包余额日志
+     * 
+     * @param id 公司红包余额日志主键
+     * @return 公司红包余额日志
+     */
+    CompanyRedPackageLogs selectCompanyRedPackageLogsById(Long id);
+
+    /**
+     * 查询公司红包余额日志列表
+     * 
+     * @param companyRedPackageLogs 公司红包余额日志
+     * @return 公司红包余额日志集合
+     */
+    List<CompanyRedPackageLogs> selectCompanyRedPackageLogsList(CompanyRedPackageLogs companyRedPackageLogs);
+
+    /**
+     * 新增公司红包余额日志
+     * 
+     * @param companyRedPackageLogs 公司红包余额日志
+     * @return 结果
+     */
+    int insertCompanyRedPackageLogs(CompanyRedPackageLogs companyRedPackageLogs);
+
+    /**
+     * 修改公司红包余额日志
+     * 
+     * @param companyRedPackageLogs 公司红包余额日志
+     * @return 结果
+     */
+    int updateCompanyRedPackageLogs(CompanyRedPackageLogs companyRedPackageLogs);
+
+    /**
+     * 批量删除公司红包余额日志
+     * 
+     * @param ids 需要删除的公司红包余额日志主键集合
+     * @return 结果
+     */
+    int deleteCompanyRedPackageLogsByIds(Long[] ids);
+
+    /**
+     * 删除公司红包余额日志信息
+     * 
+     * @param id 公司红包余额日志主键
+     * @return 结果
+     */
+    int deleteCompanyRedPackageLogsById(Long id);
+
+    void recharge(CompanyRedPackageLogs companyRedPackageLogs);
+
+    BigDecimal getMoneyPri();
+
+    void rew(CompanyRedPackageLogs entity);
+}

+ 2 - 0
fs-service-system/src/main/java/com/fs/company/service/ICompanyService.java

@@ -103,4 +103,6 @@ public interface ICompanyService
     List<Long> selectCompanyByOmsCode(String omsCode);
 
     Company selectCompanyByIdForUpdate(Long companyId);
+
+    void updateMoney(Long companyId, BigDecimal money);
 }

+ 141 - 0
fs-service-system/src/main/java/com/fs/company/service/impl/CompanyRedPackageLogsServiceImpl.java

@@ -0,0 +1,141 @@
+package com.fs.company.service.impl;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.List;
+
+import com.alibaba.fastjson.JSON;
+import com.fs.common.exception.base.BaseException;
+import com.fs.common.utils.DateUtils;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fs.company.domain.Company;
+import com.fs.company.service.ICompanyService;
+import com.fs.course.config.CourseConfig;
+import com.fs.system.service.ISysConfigService;
+import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.fs.company.mapper.CompanyRedPackageLogsMapper;
+import com.fs.company.domain.CompanyRedPackageLogs;
+import com.fs.company.service.ICompanyRedPackageLogsService;
+
+/**
+ * 公司红包余额日志Service业务层处理
+ * 
+ * @author 吴树波
+ * @date 2025-04-15
+ */
+@Service
+@AllArgsConstructor
+public class CompanyRedPackageLogsServiceImpl extends ServiceImpl<CompanyRedPackageLogsMapper, CompanyRedPackageLogs> implements ICompanyRedPackageLogsService {
+
+    private final ISysConfigService configService;
+    private final ICompanyService companyService;
+    /**
+     * 查询公司红包余额日志
+     * 
+     * @param id 公司红包余额日志主键
+     * @return 公司红包余额日志
+     */
+    @Override
+    public CompanyRedPackageLogs selectCompanyRedPackageLogsById(Long id)
+    {
+        return baseMapper.selectCompanyRedPackageLogsById(id);
+    }
+
+    /**
+     * 查询公司红包余额日志列表
+     * 
+     * @param companyRedPackageLogs 公司红包余额日志
+     * @return 公司红包余额日志
+     */
+    @Override
+    public List<CompanyRedPackageLogs> selectCompanyRedPackageLogsList(CompanyRedPackageLogs companyRedPackageLogs)
+    {
+        return baseMapper.selectCompanyRedPackageLogsList(companyRedPackageLogs);
+    }
+
+    /**
+     * 新增公司红包余额日志
+     * 
+     * @param companyRedPackageLogs 公司红包余额日志
+     * @return 结果
+     */
+    @Override
+    public int insertCompanyRedPackageLogs(CompanyRedPackageLogs companyRedPackageLogs)
+    {
+        companyRedPackageLogs.setCreateTime(DateUtils.getNowDate());
+        return baseMapper.insertCompanyRedPackageLogs(companyRedPackageLogs);
+    }
+
+    /**
+     * 修改公司红包余额日志
+     * 
+     * @param companyRedPackageLogs 公司红包余额日志
+     * @return 结果
+     */
+    @Override
+    public int updateCompanyRedPackageLogs(CompanyRedPackageLogs companyRedPackageLogs)
+    {
+        companyRedPackageLogs.setUpdateTime(DateUtils.getNowDate());
+        return baseMapper.updateCompanyRedPackageLogs(companyRedPackageLogs);
+    }
+
+    /**
+     * 批量删除公司红包余额日志
+     * 
+     * @param ids 需要删除的公司红包余额日志主键
+     * @return 结果
+     */
+    @Override
+    public int deleteCompanyRedPackageLogsByIds(Long[] ids)
+    {
+        return baseMapper.deleteCompanyRedPackageLogsByIds(ids);
+    }
+
+    /**
+     * 删除公司红包余额日志信息
+     * 
+     * @param id 公司红包余额日志主键
+     * @return 结果
+     */
+    @Override
+    public int deleteCompanyRedPackageLogsById(Long id)
+    {
+        return baseMapper.deleteCompanyRedPackageLogsById(id);
+    }
+
+    @Override
+    public void recharge(CompanyRedPackageLogs entity) {
+        if(entity.getUpMoney() == null) throw new BaseException("充值金额不能为空");
+        if(entity.getUpMoney().doubleValue() < 1) throw new BaseException("充值金额不能小于1元");
+        entity.setHandlPri(getMoneyPri());
+        entity.setHandlMoney(entity.getUpMoney().multiply(entity.getHandlPri().divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP)));
+        entity.setMoney(entity.getUpMoney().subtract(entity.getHandlMoney()));
+        entity.setType(0);
+        entity.setOperateType(0);
+        save(entity);
+    }
+
+    @Override
+    public BigDecimal getMoneyPri() {
+        String json = configService.selectConfigByKey("course.config");
+        CourseConfig config = JSON.parseObject(json, CourseConfig.class);
+        return config.getMoneyPri();
+    }
+
+    @Override
+    public void rew(CompanyRedPackageLogs entity) {
+        CompanyRedPackageLogs byId = getById(entity.getId());
+        if(byId != null) {
+            byId.setStatus(entity.getStatus());
+            byId.setRemark(entity.getRemark());
+            byId.setRejectMemo(entity.getRejectMemo());
+            byId.setRejectImages(entity.getRejectImages());
+            updateById(byId);
+            if(byId.getStatus() == 1){
+                companyService.updateMoney(byId.getCompanyId(), byId.getMoney());
+            }
+        }
+    }
+}

+ 6 - 0
fs-service-system/src/main/java/com/fs/company/service/impl/CompanyServiceImpl.java

@@ -432,4 +432,10 @@ public class CompanyServiceImpl implements ICompanyService
     public Company selectCompanyByIdForUpdate(Long companyId) {
         return companyMapper.selectCompanyByIdForUpdate(companyId);
     }
+
+    @Override
+    public void updateMoney(Long companyId, BigDecimal money) {
+        Company company = selectCompanyById(companyId);
+        companyMapper.updateMoney(companyId, company.getRedPackageMoney().add(money));
+    }
 }

+ 2 - 0
fs-service-system/src/main/java/com/fs/course/config/CourseConfig.java

@@ -3,6 +3,7 @@ package com.fs.course.config;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 
 @Data
 public class CourseConfig implements Serializable {
@@ -20,5 +21,6 @@ public class CourseConfig implements Serializable {
     private String courseDomainName;//链接域名
     private Integer rewardType; // 奖励类型 1红包 2积分
     private Integer redPacketMode;//红包模式 1总公司 2销售公司
+    private BigDecimal moneyPri;//充值手续费百分比
 
 }

+ 1 - 0
fs-service-system/src/main/java/com/fs/sop/params/SendSopParamDetailsC.java

@@ -10,6 +10,7 @@ public class SendSopParamDetailsC {
 
     private List<QwSopLogsDoSendListTVO> sendList;
 
+    private Integer type;//下一个外部联系人ID
     private String nextExternalUserId;//下一个外部联系人ID
     private Long nextExternalId;//下一个外部联系人ID
     private String appKey;

+ 2 - 0
fs-service-system/src/main/java/com/fs/sop/service/impl/QwSopLogsServiceImpl.java

@@ -589,6 +589,7 @@ public class QwSopLogsServiceImpl implements IQwSopLogsService
             Long qwId=qwUser.getId();
 
             sopParamDetailsC.setAppKey(qwUser.getAppKey());
+            sopParamDetailsC.setType(0);
 
             // 客户的信息
             QwExternalContactHParam contactHParam = new QwExternalContactHParam();
@@ -621,6 +622,7 @@ public class QwSopLogsServiceImpl implements IQwSopLogsService
                             }
                             break;
                         case 6:
+                            sopParamDetailsC.setType(1);
                             sendJsApiList.add(log);
                             break;
                         default:

+ 6 - 3
fs-service-system/src/main/resources/mapper/company/CompanyMapper.xml

@@ -30,10 +30,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectCompanyVo">
-        select company_id, company_name, company_mobile, company_address, create_time, update_time, status, start_time, limit_time, money ,tui_money, voice_api_id,company_type,user_id,app_id,app_key,remark,link_name,limit_user_count,is_del,voice_caller_number,oms_code from company
+        select * from company
     </sql>
 
-    <select id="selectCompanyList" parameterType="Company" resultMap="CompanyResult">
+    <select id="selectCompanyList" parameterType="Company" resultType="Company">
         <include refid="selectCompanyVo"/>
         <where>
             <if test="companyName != null  and companyName != ''"> and company_name like concat('%', #{companyName}, '%')</if>
@@ -46,7 +46,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </where>
     </select>
 
-    <select id="selectCompanyById" parameterType="Long" resultMap="CompanyResult">
+    <select id="selectCompanyById" parameterType="Long" resultType="Company">
         <include refid="selectCompanyVo"/>
         where company_id = #{companyId}
     </select>
@@ -128,6 +128,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </trim>
         where company_id = #{companyId}
     </update>
+    <update id="updateMoney">
+        update company set red_package_money = #{money} where company_id = #{id}
+    </update>
 
     <delete id="deleteCompanyById" parameterType="Long">
         update  company set  is_del=1 where company_id = #{companyId}

+ 127 - 0
fs-service-system/src/main/resources/mapper/company/CompanyRedPackageLogsMapper.xml

@@ -0,0 +1,127 @@
+<?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.company.mapper.CompanyRedPackageLogsMapper">
+    
+    <resultMap type="CompanyRedPackageLogs" id="CompanyRedPackageLogsResult">
+        <result property="id"    column="id"    />
+        <result property="companyId"    column="company_id"    />
+        <result property="operateType"    column="operate_type"    />
+        <result property="type"    column="type"    />
+        <result property="upMoney"    column="up_money"    />
+        <result property="handlMoney"    column="handl_money"    />
+        <result property="handlPri"    column="handl_pri"    />
+        <result property="money"    column="money"    />
+        <result property="status"    column="status"    />
+        <result property="images"    column="images"    />
+        <result property="rejectMemo"    column="reject_memo"    />
+        <result property="rejectImages"    column="reject_images"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+    </resultMap>
+
+    <sql id="selectCompanyRedPackageLogsVo">
+        select id, company_id, operate_type, type, up_money, handl_money, handl_pri, money, status, images, reject_memo, reject_images, create_time, create_by, update_by, update_time, remark from company_red_package_logs
+    </sql>
+
+    <select id="selectCompanyRedPackageLogsList" parameterType="CompanyRedPackageLogs" resultMap="CompanyRedPackageLogsResult">
+        <include refid="selectCompanyRedPackageLogsVo"/>
+        <where>  
+            <if test="companyId != null "> and company_id = #{companyId}</if>
+            <if test="operateType != null "> and operate_type = #{operateType}</if>
+            <if test="type != null "> and type = #{type}</if>
+            <if test="upMoney != null "> and up_money = #{upMoney}</if>
+            <if test="handlMoney != null "> and handl_money = #{handlMoney}</if>
+            <if test="handlPri != null "> and handl_pri = #{handlPri}</if>
+            <if test="money != null "> and money = #{money}</if>
+            <if test="status != null "> and status = #{status}</if>
+            <if test="images != null  and images != ''"> and images = #{images}</if>
+            <if test="rejectMemo != null  and rejectMemo != ''"> and reject_memo = #{rejectMemo}</if>
+            <if test="rejectImages != null  and rejectImages != ''"> and reject_images = #{rejectImages}</if>
+        </where>
+        order by create_time desc
+    </select>
+    
+    <select id="selectCompanyRedPackageLogsById" parameterType="Long" resultMap="CompanyRedPackageLogsResult">
+        <include refid="selectCompanyRedPackageLogsVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertCompanyRedPackageLogs" parameterType="CompanyRedPackageLogs" useGeneratedKeys="true" keyProperty="id">
+        insert into company_red_package_logs
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="companyId != null">company_id,</if>
+            <if test="operateType != null">operate_type,</if>
+            <if test="type != null">type,</if>
+            <if test="upMoney != null">up_money,</if>
+            <if test="handlMoney != null">handl_money,</if>
+            <if test="handlPri != null">handl_pri,</if>
+            <if test="money != null">money,</if>
+            <if test="status != null">status,</if>
+            <if test="images != null">images,</if>
+            <if test="rejectMemo != null">reject_memo,</if>
+            <if test="rejectImages != null">reject_images,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="remark != null">remark,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="companyId != null">#{companyId},</if>
+            <if test="operateType != null">#{operateType},</if>
+            <if test="type != null">#{type},</if>
+            <if test="upMoney != null">#{upMoney},</if>
+            <if test="handlMoney != null">#{handlMoney},</if>
+            <if test="handlPri != null">#{handlPri},</if>
+            <if test="money != null">#{money},</if>
+            <if test="status != null">#{status},</if>
+            <if test="images != null">#{images},</if>
+            <if test="rejectMemo != null">#{rejectMemo},</if>
+            <if test="rejectImages != null">#{rejectImages},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="remark != null">#{remark},</if>
+         </trim>
+    </insert>
+
+    <update id="updateCompanyRedPackageLogs" parameterType="CompanyRedPackageLogs">
+        update company_red_package_logs
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="companyId != null">company_id = #{companyId},</if>
+            <if test="operateType != null">operate_type = #{operateType},</if>
+            <if test="type != null">type = #{type},</if>
+            <if test="upMoney != null">up_money = #{upMoney},</if>
+            <if test="handlMoney != null">handl_money = #{handlMoney},</if>
+            <if test="handlPri != null">handl_pri = #{handlPri},</if>
+            <if test="money != null">money = #{money},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="images != null">images = #{images},</if>
+            <if test="rejectMemo != null">reject_memo = #{rejectMemo},</if>
+            <if test="rejectImages != null">reject_images = #{rejectImages},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="remark != null">remark = #{remark},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteCompanyRedPackageLogsById" parameterType="Long">
+        delete from company_red_package_logs where id = #{id}
+    </delete>
+
+    <delete id="deleteCompanyRedPackageLogsByIds" parameterType="String">
+        delete from company_red_package_logs where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>