Browse Source

公共燃料扣除

杨兴卓 1 month ago
parent
commit
67bb2f0fc3

+ 2 - 2
xyzc-common/xyzc-common-core/src/main/java/com/xyzc/common/core/exception/ErrorCode.java

@@ -41,8 +41,8 @@ public enum ErrorCode {
     QR_CODE_ERROR(1602, "二维码错误,请联系商家"),
 
 
-    PRODUCT_NO_EXIST_CODE(2000, "此产品编码不存在"),
-    PRODUCT_STATUS_DISABLE(2001, "此产品暂停销售"),
+    AI_MODEL_NO_EXIST_CODE(2000, "此AI模型不存在"),
+    AI_MODEL_STATUS_DISABLE(2001, "此产品暂停销售"),
     ORDER_ALREADY_EXIST(2006, "此订单号已存在"),
     ORDER_NO_EXIST(2007, "此订单号不存在"),
     DISCOUNT_NO_CONFIG(2008, "折扣未配置"),

+ 1 - 1
xyzc-start/src/main/java/com/xyzc/start/controller/AppPageController.java

@@ -36,7 +36,7 @@ public class AppPageController {
     }
 
     /**
-     * 具体行业分类的app列表
+     * 具体行业分类的app列表
      */
     @GetMapping("/byIndustry/{industryId}")
     public Result<List<WebAppGroupVo>> byIndustry(@PathVariable("industryId") Long industryId) {

+ 2 - 1
xyzc-start/src/main/java/com/xyzc/start/controller/DiscoverPageController.java

@@ -55,6 +55,7 @@ public class DiscoverPageController {
     @GetMapping("/drawAssistant")
     public Result<List<Void>> drawAssistant() {
 
+
         return Result.ok();
     }
 
@@ -62,7 +63,7 @@ public class DiscoverPageController {
      * 进入具体绘画模型
      */
     @GetMapping("/drawModel/{modelId}")
-    public Result<List<Void>> drawModel(String modelId) {
+    public Result<List<Void>> querydrawModel(String modelId) {
 
         return Result.ok();
     }

+ 2 - 2
xyzc-start/src/main/java/com/xyzc/start/controller/UserInfoController.java

@@ -90,8 +90,8 @@ public class UserInfoController {
      * 根据对应的appId扣减燃料
      */
     @PutMapping("/deduct")
-    public Result<String> deduct(Long appId) {
-        userInfoService.deduct(appId);
+    public Result<String> deduct(Long appId, Long aiModelId) {
+        userInfoService.deduct(appId, aiModelId);
 
         return Result.ok(FuelDeduct.DEDUCT_SUCCESS);
     }

+ 24 - 0
xyzc-start/src/main/java/com/xyzc/start/domain/Career.java

@@ -0,0 +1,24 @@
+package com.xyzc.start.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.xyzc.common.mybatis.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 职业类型
+ *
+ * @author 杨兴卓
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("xy_career")
+public class Career extends BaseEntity {
+
+    private Long id;
+    private String careerName;
+
+    private Long industryId;
+    private Integer sort;
+
+}

+ 33 - 0
xyzc-start/src/main/java/com/xyzc/start/domain/vo/CareerVo.java

@@ -0,0 +1,33 @@
+package com.xyzc.start.domain.vo;
+
+import com.xyzc.start.domain.Career;
+import io.github.linpeilie.annotations.AutoMapper;
+import io.github.linpeilie.annotations.AutoMapping;
+import lombok.Data;
+
+@Data
+@AutoMapper(target = Career.class)
+public class CareerVo {
+
+    /**
+     * 职业id
+     */
+    @AutoMapping(target = "id")
+    private Long careerId;
+
+    /**
+     * 职业名称
+     */
+    private String careerName;
+
+    /**
+     * 所属的行业id
+     */
+    private Long industryId;
+
+    /**
+     * 排序
+     */
+    private Integer sort;
+
+}

+ 12 - 1
xyzc-start/src/main/java/com/xyzc/start/domain/vo/IndustryVo.java

@@ -1,18 +1,25 @@
 package com.xyzc.start.domain.vo;
 
+import com.xyzc.start.domain.Industry;
+import io.github.linpeilie.annotations.AutoMapper;
+import io.github.linpeilie.annotations.AutoMapping;
 import lombok.Data;
 
+import java.util.List;
+
 /**
  * 行业信息
  */
 
 @Data
+@AutoMapper(target = Industry.class)
 public class IndustryVo {
 
     /**
      * 行业ID
      */
-    private Long id;
+    @AutoMapping(target = "id")
+    private Long industryId;
 
     /**
      * 行业名称
@@ -24,5 +31,9 @@ public class IndustryVo {
      */
     private Integer sort;
 
+    /**
+     * 职业表
+     */
+    private List<CareerVo> careerList;
 
 }

+ 2 - 1
xyzc-start/src/main/java/com/xyzc/start/mapper/AppMapper.java

@@ -23,9 +23,10 @@ public interface AppMapper extends BaseMapperPlus<App, AppVo> {
     /**
      *
      * @param appId
+     * @param aiModelId
      * @return
      */
-    AiModelVo queryAiModelFuel(Long appId);
+    AiModelVo queryAiModelFuel(Long appId, Long aiModelId);
 
 
 }

+ 11 - 0
xyzc-start/src/main/java/com/xyzc/start/mapper/CareerMapper.java

@@ -0,0 +1,11 @@
+package com.xyzc.start.mapper;
+
+
+import com.xyzc.common.mybatis.core.mapper.BaseMapperPlus;
+import com.xyzc.start.domain.Career;
+import com.xyzc.start.domain.vo.CareerVo;
+
+public interface CareerMapper extends BaseMapperPlus<Career, CareerVo> {
+
+
+}

+ 2 - 1
xyzc-start/src/main/java/com/xyzc/start/mapper/IndustryMapper.java

@@ -1,13 +1,14 @@
 package com.xyzc.start.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xyzc.common.mybatis.core.mapper.BaseMapperPlus;
 import com.xyzc.start.domain.Industry;
 import com.xyzc.start.domain.vo.IndustryVo;
 
 import java.util.List;
 
 
-public interface IndustryMapper extends BaseMapper<Industry> {
+public interface IndustryMapper extends BaseMapperPlus<Industry, IndustryVo> {
 
     /**
      * 查询行业列表

+ 2 - 2
xyzc-start/src/main/java/com/xyzc/start/service/IUserInfoService.java

@@ -84,11 +84,11 @@ public interface IUserInfoService {
     void exchange(AgentCardSecretBo exchangeBo);
 
     /**
-     * 根据对应的id扣除燃料
+     * 根据对应的应用id扣除燃料
      *
      * @param appId
      */
-    void deduct(Long appId);
+    void deduct(Long appId, Long aiModelId);
 
     /**
      * 收藏或取消

+ 22 - 1
xyzc-start/src/main/java/com/xyzc/start/service/impl/AppPageServiceImpl.java

@@ -1,9 +1,11 @@
 package com.xyzc.start.service.impl;
 
 import com.xyzc.start.domain.vo.AppVo;
+import com.xyzc.start.domain.vo.CareerVo;
 import com.xyzc.start.domain.vo.IndustryVo;
 import com.xyzc.start.domain.vo.WebAppGroupVo;
 import com.xyzc.start.mapper.AppMapper;
+import com.xyzc.start.mapper.CareerMapper;
 import com.xyzc.start.mapper.IndustryMapper;
 import com.xyzc.start.mapper.WebAppGroupMapper;
 import com.xyzc.start.service.IAppPageService;
@@ -21,6 +23,8 @@ import java.util.List;
 public class AppPageServiceImpl implements IAppPageService {
 
     private final IndustryMapper industryMapper;
+    private final CareerMapper careerMapper;
+
     private final WebAppGroupMapper webAppGroupMapper;
     private final AppMapper appMapper;
 
@@ -54,16 +58,33 @@ public class AppPageServiceImpl implements IAppPageService {
      */
     @Override
     public List<IndustryVo> queryByIndustry() {
-        return industryMapper.queryList(null);
 
+        List<IndustryVo> industryVoList = industryMapper.selectVoList();
+        // 将行业列表的id抽取出来
+        List<Long> industryIds = industryVoList.stream().map(IndustryVo::getIndustryId).toList();
+
+        List<CareerVo> careerVos = careerMapper.selectVoBatchIds(industryIds);
+
+        //遍历行业列表,将职业列表通过行业id关联
+        for (IndustryVo industryVo : industryVoList) {
+            industryVo.setCareerList(careerVos.stream()
+                    .filter(
+                            careerVo -> careerVo.getIndustryId().equals(industryVo.getIndustryId())
+                    ).toList()
+            );
+        }
+        
+        return industryVoList;
     }
 
     /**
+     *
      * @param industryId
      * @return
      */
     @Override
     public List<WebAppGroupVo> queryByIndustryId(Long industryId) {
+
         return List.of();
     }
 

+ 5 - 2
xyzc-start/src/main/java/com/xyzc/start/service/impl/UserInfoServiceImpl.java

@@ -235,12 +235,15 @@ public class UserInfoServiceImpl implements IUserInfoService {
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void deduct(Long appId) {
+    public void deduct(Long appId, Long aiModelId) {
         // 首先获取个人燃料剩余量
         BaseUser baseUser = baseUserMapper.selectVoByIdForUpdate(SecurityUser.getUserId());
 
         // 然后获取应用对应的ai模型燃料扣除量
-        AiModelVo aiModelVo = appMapper.queryAiModelFuel(appId);
+        AiModelVo aiModelVo = appMapper.queryAiModelFuel(appId, aiModelId);
+
+        // 未查到应用报错
+        AssertUtils.notNull(aiModelVo, ErrorCode.AI_MODEL_NO_EXIST_CODE);
         baseUser.setSurplusFuel(baseUser.getSurplusFuel() - aiModelVo.getConsumeFuelNumber());
 
         // 判断扣除后的用户剩余燃料是否小于0,如果小于0,则抛出异常

+ 2 - 3
xyzc-start/src/main/resources/mapper/WebStart/AppMapper.xml

@@ -11,9 +11,8 @@
 
     <select id="queryAiModelFuel" resultType="com.xyzc.start.domain.vo.AiModelVo">
         SELECT am.id, am.consume_fuel_number
-        from xy_app app
-            left join xy_ai_model_app  ama on ama.app_id = .app_id
-                 left join xy_ai_model am on app.ai_model_id = am.id
+        from  xy_ai_model am
+        where am.id = #{aiModelId} AND am.del_flag = '0'
     </select>
 
 

+ 6 - 3
xyzc-start/src/main/resources/mapper/WebStart/BaseUserCollectMapper.xml

@@ -159,10 +159,13 @@
             xy_base_user_collect
         WHERE base_user_id = #{userId}
             AND type = #{type}
+        <if test="appIdList != null and appIdList.size() > 0">
             AND collect_id in
-        <foreach collection="appIdList" item="appId" open="(" separator="," close=")">
-            #{appId}
-        </foreach>
+            <foreach collection="appIdList" item="appId" open="(" separator="," close=")">
+                #{appId}
+            </foreach>
+        </if>
+
 
     </select>