소스 검색

红德堂-节气限定

Long 1 주 전
부모
커밋
acc53625da

+ 64 - 0
fs-admin/src/main/java/com/fs/his/controller/FsPackageSolarTermController.java

@@ -0,0 +1,64 @@
+package com.fs.his.controller;
+
+import com.fs.common.annotation.Log;
+import com.fs.common.core.controller.BaseController;
+import com.fs.common.core.domain.AjaxResult;
+import com.fs.common.core.page.TableDataInfo;
+import com.fs.common.enums.BusinessType;
+import com.fs.his.domain.FsPackageSolarTerm;
+import com.fs.his.param.FsPackageSolarTermParam;
+import com.fs.his.service.IFsPackageSolarTermService;
+import com.fs.his.vo.FsPackageSolarTermVO;
+import lombok.AllArgsConstructor;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/his/packageSolarTerm")
+@AllArgsConstructor
+public class FsPackageSolarTermController extends BaseController {
+
+    private final IFsPackageSolarTermService solarTermService;
+
+    @PreAuthorize("@ss.hasPermi('his:packageSolarTerm:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(FsPackageSolarTermParam param) {
+        startPage();
+        List<FsPackageSolarTermVO> list = solarTermService.selectFsPackageSolarTermListVO(param);
+        return getDataTable(list);
+    }
+
+    @PreAuthorize("@ss.hasPermi('his:packageSolarTerm:query')")
+    @GetMapping(value = "/{solarTermId}")
+    public AjaxResult getInfo(@PathVariable Long solarTermId) {
+        return AjaxResult.success(solarTermService.selectFsPackageSolarTermVO(solarTermId));
+    }
+
+    @PreAuthorize("@ss.hasPermi('his:packageSolarTerm:add')")
+    @Log(title = "套餐包节气", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody FsPackageSolarTerm param) {
+        return toAjax(solarTermService.insertFsPackageSolarTerm(param));
+    }
+
+    @PreAuthorize("@ss.hasPermi('his:packageSolarTerm:edit')")
+    @Log(title = "套餐包节气", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody FsPackageSolarTerm param) {
+        return toAjax(solarTermService.updateFsPackageSolarTerm(param));
+    }
+
+    @PreAuthorize("@ss.hasPermi('his:packageSolarTerm:remove')")
+    @Log(title = "套餐包", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{solarTermIds}")
+    public AjaxResult remove(@PathVariable Long[] solarTermIds) {
+        return toAjax(solarTermService.deleteFsPackageSolarTermByIds(solarTermIds));
+    }
+
+    @GetMapping("/getOptions")
+    public AjaxResult getOptions() {
+        return AjaxResult.success(solarTermService.getOptions());
+    }
+}

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

@@ -101,4 +101,6 @@ public class FsPackage extends BaseEntity
     private String icdCode;
     @Excel(name = "描述")
     private String description;
+    /** 节气 */
+    private Long solarTerm;
 }

+ 58 - 0
fs-service/src/main/java/com/fs/his/domain/FsPackageSolarTerm.java

@@ -0,0 +1,58 @@
+package com.fs.his.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+@TableName("fs_package_solar_term")
+public class FsPackageSolarTerm {
+    /**
+     * 主键ID
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+    /**
+     * 节气名称
+     */
+    private String name;
+    /**
+     * 简介
+     */
+    @TableField("`desc`")
+    private String desc;
+    /**
+     * 开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime startTime;
+    /**
+     * 结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime endTime;
+    /**
+     * 序号
+     */
+    private Integer sort;
+    /**
+     * 是否删除 0正常 1删除
+     */
+    private Integer isDel;
+    /**
+     * 状态 1启用 0停用
+     */
+    private Integer status;
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+    /**
+     * 修改时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updateTime;
+}

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

@@ -82,6 +82,7 @@ public interface FsPackageMapper
             "            <if test=\"maps.privateType != null \"> and private_type = #{maps.privateType}</if>\n" +
             "            <if test=\"maps.diseaseType != null \"> and disease_type = #{maps.diseaseType}</if>\n" +
             "            <if test=\"maps.isShow != null \"> and is_show = #{maps.isShow}</if>\n" +
+            "            <if test=\"maps.solarTerm != null \"> and solar_term = #{maps.solarTerm}</if>\n" +
             "        order by sort,package_id desc"+
             "</script>"})
 
@@ -141,4 +142,7 @@ public interface FsPackageMapper
     int updatePackagesStatus(@Param("packageIds")Long[] packageIds,@Param("status")Long status);
 
     List<String> selectIcdNameByPackageId(@Param("packageId")Long packageId);
+
+    @Update("UPDATE fs_package SET solar_term = NULL WHERE package_id = #{packageId}")
+    void setSolarTermIsNullById(@Param("packageId") Long packageId);
 }

+ 24 - 0
fs-service/src/main/java/com/fs/his/mapper/FsPackageSolarTermMapper.java

@@ -0,0 +1,24 @@
+package com.fs.his.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fs.company.vo.OptionVO;
+import com.fs.his.domain.FsPackageSolarTerm;
+import com.fs.his.param.FsPackageSolarTermParam;
+import com.fs.his.vo.FsPackageSolarTermVO;
+
+import java.util.List;
+
+public interface FsPackageSolarTermMapper extends BaseMapper<FsPackageSolarTerm> {
+
+    /**
+     * 根据条件查询节气列表
+     * @param param 参数
+     * @return  list
+     */
+    List<FsPackageSolarTermVO> selectFsPackageSolarTermListVO(FsPackageSolarTermParam param);
+
+    /**
+     * 获取节气选项
+     */
+    List<OptionVO> getOptions();
+}

+ 1 - 0
fs-service/src/main/java/com/fs/his/param/FsPackageParam.java

@@ -24,4 +24,5 @@ public class FsPackageParam implements Serializable {
     private Integer isDel;
     private Long packageId;
     private Integer isShow;
+    private Long solarTerm;
 }

+ 15 - 0
fs-service/src/main/java/com/fs/his/param/FsPackageSolarTermParam.java

@@ -0,0 +1,15 @@
+package com.fs.his.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class FsPackageSolarTermParam {
+
+    @ApiModelProperty("节气名称")
+    private String name;
+
+    @ApiModelProperty("节气状态")
+    private Integer status;
+
+}

+ 52 - 0
fs-service/src/main/java/com/fs/his/service/IFsPackageSolarTermService.java

@@ -0,0 +1,52 @@
+package com.fs.his.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fs.company.vo.OptionVO;
+import com.fs.his.domain.FsPackageSolarTerm;
+import com.fs.his.param.FsPackageSolarTermParam;
+import com.fs.his.vo.FsPackageSolarTermVO;
+
+import java.util.List;
+
+public interface IFsPackageSolarTermService extends IService<FsPackageSolarTerm> {
+
+    /**
+     * 查询节气列表
+     * @param param 参数
+     * @return List
+     */
+    List<FsPackageSolarTermVO> selectFsPackageSolarTermListVO(FsPackageSolarTermParam param);
+
+    /**
+     * 根据ID查询节气详情
+     * @param solarTermId id
+     * @return FsPackageSolarTermVO
+     */
+    FsPackageSolarTermVO selectFsPackageSolarTermVO(Long solarTermId);
+
+    /**
+     * 添加节气
+     * @param param 参数
+     * @return  受影响行数
+     */
+    int insertFsPackageSolarTerm(FsPackageSolarTerm param);
+
+    /**
+     * 修改节气
+     * @param param 参数
+     * @return  受影响行数
+     */
+    int updateFsPackageSolarTerm(FsPackageSolarTerm param);
+
+    /**
+     * 删除节气
+     * @param solarTermIds  ids
+     * @return  受影响行数
+     */
+    int deleteFsPackageSolarTermByIds(Long[] solarTermIds);
+
+    /**
+     * 获取节气选项
+     */
+    List<OptionVO> getOptions();
+}

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

@@ -8,6 +8,7 @@ import java.net.URL;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 
 import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONUtil;
@@ -30,6 +31,7 @@ import org.springframework.stereotype.Service;
 import com.fs.his.mapper.FsPackageMapper;
 import com.fs.his.domain.FsPackage;
 import com.fs.his.service.IFsPackageService;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.imageio.ImageIO;
 
@@ -104,6 +106,7 @@ public class FsPackageServiceImpl implements IFsPackageService {
      * @param fsPackage 套餐包
      * @return 结果
      */
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public int updateFsPackage(FsPackage fsPackage) {
         fsPackage.setUpdateTime(DateUtils.getNowDate());
@@ -126,6 +129,11 @@ public class FsPackageServiceImpl implements IFsPackageService {
         if (isShow != null && isShow == 0) {
             fsPackage.setDiseaseType(-1);
         }
+
+        if (Objects.isNull(fsPackage.getSolarTerm())) {
+            fsPackageMapper.setSolarTermIsNullById(fsPackage.getPackageId());
+        }
+
         return fsPackageMapper.updateFsPackage(fsPackage);
     }
 

+ 98 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsPackageSolarTermServiceImpl.java

@@ -0,0 +1,98 @@
+package com.fs.his.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fs.common.BeanCopyUtils;
+import com.fs.common.exception.CustomException;
+import com.fs.company.vo.OptionVO;
+import com.fs.his.domain.FsPackageSolarTerm;
+import com.fs.his.mapper.FsPackageSolarTermMapper;
+import com.fs.his.param.FsPackageSolarTermParam;
+import com.fs.his.service.IFsPackageSolarTermService;
+import com.fs.his.vo.FsPackageSolarTermVO;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
+
+@Service
+public class FsPackageSolarTermServiceImpl extends ServiceImpl<FsPackageSolarTermMapper, FsPackageSolarTerm> implements IFsPackageSolarTermService {
+
+    /**
+     * 查询节气列表
+     * @param param 参数
+     * @return List
+     */
+    @Override
+    public List<FsPackageSolarTermVO> selectFsPackageSolarTermListVO(FsPackageSolarTermParam param) {
+        return baseMapper.selectFsPackageSolarTermListVO(param);
+    }
+
+    /**
+     * 根据ID查询节气详情
+     * @param solarTermId id
+     * @return FsPackageSolarTermVO
+     */
+    @Override
+    public FsPackageSolarTermVO selectFsPackageSolarTermVO(Long solarTermId) {
+        FsPackageSolarTerm solarTerm = baseMapper.selectById(solarTermId);
+        if (Objects.isNull(solarTerm)) {
+            throw new CustomException("节气不存在");
+        }
+
+        return BeanCopyUtils.copy(solarTerm, FsPackageSolarTermVO.class);
+    }
+
+    /**
+     * 添加节气
+     * @param param 参数
+     * @return  受影响行数
+     */
+    @Override
+    public int insertFsPackageSolarTerm(FsPackageSolarTerm param) {
+        param.setCreateTime(LocalDateTime.now());
+        return baseMapper.insert(param);
+    }
+
+    /**
+     * 修改节气
+     * @param param 参数
+     * @return  受影响行数
+     */
+    @Override
+    public int updateFsPackageSolarTerm(FsPackageSolarTerm param) {
+        if (Objects.isNull(param.getId())) {
+            throw new CustomException("节气ID不能为空");
+        }
+        param.setUpdateTime(LocalDateTime.now());
+        return baseMapper.updateById(param);
+    }
+
+    /**
+     * 删除节气
+     * @param solarTermIds  ids
+     * @return  受影响行数
+     */
+    @Override
+    public int deleteFsPackageSolarTermByIds(Long[] solarTermIds) {
+        List<FsPackageSolarTerm> fsPackageSolarTerms = baseMapper.selectBatchIds(Arrays.asList(solarTermIds));
+        if (Objects.nonNull(fsPackageSolarTerms) && !fsPackageSolarTerms.isEmpty()) {
+            fsPackageSolarTerms.forEach(fsPackageSolarTerm -> {
+                fsPackageSolarTerm.setIsDel(1);
+                baseMapper.updateById(fsPackageSolarTerm);
+            });
+            return 1;
+        }
+        return 0;
+    }
+
+    /**
+     * 获取节气选项
+     */
+    @Override
+    public List<OptionVO> getOptions() {
+        return baseMapper.getOptions();
+    }
+}

+ 1 - 1
fs-service/src/main/java/com/fs/his/service/impl/FsUserIntegralLogsServiceImpl.java

@@ -249,7 +249,7 @@ public class FsUserIntegralLogsServiceImpl implements IFsUserIntegralLogsService
 //                    logsType = FsUserIntegralLogTypeEnum.TYPE_1;
 //                    break;
                 case 2: //消费获得积分
-                    integralNum = param.getPoints() * config.getIntegralRatio();
+                    integralNum = param.getPoints();
                     logsType = FsUserIntegralLogTypeEnum.TYPE_2;
                     break;
                 case 3: //分享获得积分

+ 41 - 5
fs-service/src/main/java/com/fs/his/service/impl/FsUserServiceImpl.java

@@ -5,13 +5,17 @@ import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.math.MathContext;
 import java.math.RoundingMode;
+import java.time.LocalDateTime;
 import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
 import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fs.common.constant.HttpStatus;
 import com.fs.common.core.domain.R;
 import com.fs.common.core.domain.ResponseResult;
@@ -37,8 +41,7 @@ import com.fs.course.vo.newfs.FsCourseAnalysisCountVO;
 import com.fs.course.vo.newfs.FsCourseAnalysisVO;
 import com.fs.course.vo.newfs.FsUserCourseVideoPageListVO;
 import com.fs.his.config.IntegralConfig;
-import com.fs.his.domain.FsUserAddress;
-import com.fs.his.domain.FsUserIntegralLogs;
+import com.fs.his.domain.*;
 import com.fs.his.enums.FsUserIntegralLogTypeEnum;
 import com.fs.his.mapper.*;
 import com.fs.his.param.FsUserAddIntegralTemplateParam;
@@ -74,7 +77,6 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.fs.his.domain.FsUser;
 import com.fs.his.service.IFsUserService;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
@@ -117,7 +119,9 @@ public class FsUserServiceImpl implements IFsUserService
     @Autowired
     private CompanyTagUserMapper companyTagUserMapper;
     @Autowired
-    private FsUserCompanyUserMapper fsUserCompanyUserMapper;
+    private FsPackageMapper packageMapper;
+    @Autowired
+    private FsPackageSolarTermMapper packageSolarTermMapper;
 
     @Autowired
     private ICompanyUserCacheService companyUserCacheService;
@@ -287,14 +291,46 @@ public class FsUserServiceImpl implements IFsUserService
     @Override
     @Transactional
     public void addUserIntegral(BigDecimal payMoney,Long userId,Long orderId ,Integer orderType) {
+        String json =configService.selectConfigByKey("his.integral");
+        IntegralConfig config = JSONUtil.toBean(json,IntegralConfig.class);
+
+        int points = payMoney.intValue() * config.getIntegralRatio();
+
+        // 节气套餐包双倍积分
+        if (isSolarTerm(orderId, orderType)) {
+            points *= 2;
+        }
+
         FsUserAddIntegralTemplateParam integralTemplateParam = new FsUserAddIntegralTemplateParam();
         integralTemplateParam.setUserId(userId);
         integralTemplateParam.setLogType(FsUserIntegralLogTypeEnum.TYPE_2.getValue());
         integralTemplateParam.setBusinessId(orderId.toString());
-        integralTemplateParam.setPoints(payMoney.intValue());
+        integralTemplateParam.setPoints(points);
         userIntegralLogsService.addIntegralTemplate(integralTemplateParam);
     }
 
+    /**
+     * 判断是否节气套餐包
+     */
+    private boolean isSolarTerm(Long orderId ,Integer orderType) {
+        if (orderType == 2) {
+            FsStoreOrder fsStoreOrder = fsStoreOrderMapper.selectFsStoreOrderByOrderId(orderId);
+            if (Objects.nonNull(fsStoreOrder.getPackageId())) {
+                FsPackage fsPackage = packageMapper.selectFsPackageByPackageId(fsStoreOrder.getPackageId());
+                if (Objects.nonNull(fsPackage) && Objects.nonNull(fsPackage.getSolarTerm())) {
+                    Wrapper<FsPackageSolarTerm> queryWrapper = Wrappers.<FsPackageSolarTerm>lambdaQuery()
+                            .eq(FsPackageSolarTerm::getId, fsPackage.getSolarTerm())
+                            .eq(FsPackageSolarTerm::getIsDel, 0);
+                    FsPackageSolarTerm fsPackageSolarTerm = packageSolarTermMapper.selectOne(queryWrapper);
+                    return Objects.nonNull(fsPackageSolarTerm)
+                            && LocalDateTime.now().isAfter(fsPackageSolarTerm.getStartTime())
+                            && LocalDateTime.now().isBefore(fsPackageSolarTerm.getEndTime());
+                }
+            }
+        }
+        return false;
+    }
+
     @Override
     @Transactional
     public void followAddIntegral(Long userId,Long orderId) {

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

@@ -65,4 +65,6 @@ public class FsPackageListVO extends BaseEntity {
     private String secondName;
 
     private BigDecimal totalPrice;
+
+    private Long solarTerm;
 }

+ 42 - 0
fs-service/src/main/java/com/fs/his/vo/FsPackageSolarTermVO.java

@@ -0,0 +1,42 @@
+package com.fs.his.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class FsPackageSolarTermVO {
+
+    @ApiModelProperty("主键ID")
+    private Long id;
+
+    @ApiModelProperty("节气名称")
+    private String name;
+
+    @ApiModelProperty("简介")
+    private String desc;
+
+    @ApiModelProperty("开始时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime startTime;
+
+    @ApiModelProperty("结束时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime endTime;
+
+    @ApiModelProperty("序号")
+    private Integer sort;
+
+    @ApiModelProperty("状态 1启用 0停用")
+    private Integer status;
+
+    @ApiModelProperty("创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("修改时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updateTime;
+}

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

@@ -121,4 +121,6 @@ public class FsPackageVO {
     private String doctorRemark;
     @Excel(name = "描述")
     private String description;
+
+    private Long solarTerm;
 }

+ 46 - 0
fs-service/src/main/resources/db/20250801-节气限定.sql

@@ -0,0 +1,46 @@
+-- 节气表
+drop table if exists `fs_package_solar_term`;
+create table `fs_package_solar_term` (
+    `id`            bigint not null auto_increment       comment '主键ID',
+    `name`          varchar(255) not null                comment '节气名称',
+    `desc`          varchar(1000)                        comment '简介',
+    `start_time`    datetime not null                    comment '开始时间',
+    `end_time`      datetime not null                    comment '结束时间',
+    `sort`          tinyint default null                 comment '排序号',
+    `is_del`        tinyint(1) default 0                 comment '是否删除 0正常 1删除',
+    `status`        tinyint(1) default 1                 comment '状态 1启用 0停用',
+    `create_time`   datetime                             comment '创建时间',
+    `update_time`   datetime                             comment '修改时间',
+    primary key (`id`) using btree
+) engine = Innodb comment '节气表';
+
+alter table fs_package
+    add column solar_term bigint comment '节气';
+
+-- 字典
+INSERT INTO `sys_dict_type`
+    (`dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES
+    ('节气状态', 'solar_Term_status', '0', 'admin', '2025-08-01 17:34:31', '', NULL, NULL);
+
+INSERT INTO `sys_dict_data`
+    (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES
+    (1, '启用', '1', 'solar_Term_status', NULL, 'default', 'N', '0', 'admin', '2025-08-01 17:35:19', '', NULL, NULL),
+    (2, '停用', '0', 'solar_Term_status', NULL, 'default', 'N', '0', 'admin', '2025-08-01 17:35:33', '', NULL, NULL);
+
+-- 菜单
+INSERT INTO `sys_menu`
+    (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES
+    ('节气管理', 1285, 5, 'solarTerm', 'his/packageSolarTerm/index', NULL, 1, 0, 'C', '0', '0', 'his:packageSolarTerm:list', 'theme', 'admin', '2025-08-01 17:04:29', 'admin', '2025-08-01 17:04:55', '');
+
+SET @parent_id = LAST_INSERT_ID();
+
+INSERT INTO `sys_menu`
+    (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES
+    ('节气修改', @parent_id, 3, '', NULL, NULL, 1, 0, 'F', '0', '0', 'his:packageSolarTerm:edit', '#', 'admin', '2025-08-04 10:03:27', '', NULL, ''),
+    ('节气添加', @parent_id, 2, '', NULL, NULL, 1, 0, 'F', '0', '0', 'his:packageSolarTerm:add', '#', 'admin', '2025-08-04 10:03:10', '', NULL, ''),
+    ('节气查询', @parent_id, 1, '', NULL, NULL, 1, 0, 'F', '0', '0', 'his:packageSolarTerm:query', '#', 'admin', '2025-08-04 10:02:51', '', NULL, ''),
+    ('节气删除', @parent_id, 4, '', NULL, NULL, 1, 0, 'F', '0', '0', 'his:packageSolarTerm:remove', '#', 'admin', '2025-08-04 10:03:46', '', NULL, '');

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

@@ -47,10 +47,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="usagePerUseCount"    column="usage_per_use_count"    />
         <result property="icdCode"    column="icd_code"    />
         <result property="description"    column="description"    />
+        <result property="solarTerm"    column="solar_term"    />
     </resultMap>
 
     <sql id="selectFsPackageVo">
-        select package_id,description,usage_per_use_count,icd_code,images,doctor_remark,second_name,follow_temp_id,product_cost_price,inquiry_cost_price,total_cost_price,follow_num,`explain`,indication,store_id,private_type,recipe_type,counts,usage_frequency_unit, package_name,img_url,is_show,total_price,cycle,duration,`desc`,product_type,price,tags,sales,disease_type,num,package_sub_type,describe_json,pay_type,package_type, sort, product_json, status, create_time, update_time, is_del from fs_package
+        select package_id,description,usage_per_use_count,icd_code,images,doctor_remark,second_name,follow_temp_id,product_cost_price,inquiry_cost_price,total_cost_price,follow_num,`explain`,indication,store_id,private_type,recipe_type,counts,usage_frequency_unit, package_name,img_url,is_show,total_price,cycle,duration,`desc`,product_type,price,tags,sales,disease_type,num,package_sub_type,describe_json,pay_type,package_type, sort, product_json, status, create_time, update_time, is_del,solar_term from fs_package
     </sql>
 
     <select id="selectFsPackageList" parameterType="FsPackage" resultMap="FsPackageResult">
@@ -120,6 +121,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="usagePerUseCount != null">usage_per_use_count,</if>
             <if test="icdCode != null">icd_code,</if>
             <if test="description != null">description,</if>
+            <if test="solarTerm != null">solar_term,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="packageName != null">#{packageName},</if>
@@ -163,6 +165,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="usagePerUseCount != null">#{usagePerUseCount},</if>
             <if test="icdCode != null">#{icdCode},</if>
             <if test="description != null">#{description},</if>
+            <if test="solarTerm != null">#{solarTerm},</if>
         </trim>
     </insert>
 
@@ -210,6 +213,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="usagePerUseCount != null">usage_per_use_count = #{usagePerUseCount},</if>
             <if test="icdCode != null">icd_code = #{icdCode},</if>
             <if test="description != null">description = #{description},</if>
+            <if test="solarTerm != null">solar_term = #{solarTerm},</if>
         </trim>
         where package_id = #{packageId}
     </update>

+ 24 - 0
fs-service/src/main/resources/mapper/his/FsPackageSolarTermMapper.xml

@@ -0,0 +1,24 @@
+<?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.his.mapper.FsPackageSolarTermMapper">
+
+    <select id="selectFsPackageSolarTermListVO" resultType="com.fs.his.vo.FsPackageSolarTermVO">
+        select pst.*
+        from fs_package_solar_term pst
+        where pst.is_del = 0
+        <if test="name != null and name != ''">
+            and pst.name like concat('%', #{name}, '%')
+        </if>
+        order by pst.sort,pst.id
+    </select>
+
+    <select id="getOptions" resultType="com.fs.company.vo.OptionVO">
+        select
+            pst.name label,
+            pst.id   value
+        from fs_package_solar_term pst
+        where pst.is_del = 0 and pst.status = 1
+    </select>
+</mapper>