Procházet zdrojové kódy

制单改价、APP刷视频

yjwang před 2 dny
rodič
revize
1526c4f09e
16 změnil soubory, kde provedl 335 přidání a 118 odebrání
  1. 1 1
      fs-service/src/main/java/com/fs/course/mapper/FsUserVideoMapper.java
  2. 6 0
      fs-service/src/main/java/com/fs/course/vo/FsUserVideoListUVO.java
  3. 4 0
      fs-service/src/main/java/com/fs/hisStore/domain/FsStorePreparedPriceChange.java
  4. 1 1
      fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreCartScrmMapper.java
  5. 2 1
      fs-service/src/main/java/com/fs/hisStore/service/IFsStoreOrderScrmService.java
  6. 73 6
      fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreOrderScrmServiceImpl.java
  7. 24 3
      fs-service/src/main/java/com/fs/hisStore/service/impl/FsStorePreparedPriceChangeServiceImpl.java
  8. 15 0
      fs-service/src/main/java/com/fs/hisStore/vo/FsStoreCartGroupStoreScrmVO.java
  9. 3 0
      fs-service/src/main/java/com/fs/hisStore/vo/FsStoreCartQueryVO.java
  10. 16 0
      fs-service/src/main/java/com/fs/hisStore/vo/FsStorePreparedProductInfoVo.java
  11. 2 1
      fs-service/src/main/resources/mapper/course/FsCourseWatchLogMapper.xml
  12. 57 40
      fs-service/src/main/resources/mapper/hisStore/FsStoreCartScrmMapper.xml
  13. 89 63
      fs-service/src/main/resources/mapper/hisStore/FsStorePreparedPriceChangeMapper.xml
  14. 10 1
      fs-user-app/src/main/java/com/fs/app/controller/store/CompanyOrderScrmController.java
  15. 31 1
      fs-user-app/src/main/java/com/fs/app/controller/store/FsStorePreparedPriceChangeController.java
  16. 1 0
      fs-user-app/src/main/java/com/fs/app/controller/store/StoreOrderScrmController.java

+ 1 - 1
fs-service/src/main/java/com/fs/course/mapper/FsUserVideoMapper.java

@@ -254,7 +254,7 @@ public interface FsUserVideoMapper
     @Select({"<script> " +
             "select v.video_id as id,v.title,v.description as msg,t.nick_name as username,t.avatar as headImg, " +
             "v.thumbnail as cover,v.url as src,v.likes as likeNum,v.comments as smsNum,v.favorite_num," +
-            "v.create_time,v.views as playNumber,v.product_id,p.img_url,p.package_name,v.upload_type,v.shares,v.add_num,v.is_audit,v.fail_reason,v.status from fs_user_video v " +
+            "v.create_time,v.views as playNumber,v.product_id,p.img_url,p.package_name,v.upload_type,v.shares,v.add_num,v.is_audit,v.fail_reason,v.status,v.remark,v.remark AS failReason from fs_user_video v " +
             "left join fs_user_talent t on t.talent_id = v.talent_id " +
             " left join fs_package p on p.package_id = v.product_id " +
             "where v.is_del = 0 and (" +

+ 6 - 0
fs-service/src/main/java/com/fs/course/vo/FsUserVideoListUVO.java

@@ -38,4 +38,10 @@ public class FsUserVideoListUVO {
     private Integer uploadType;
     private Long shares;
     private String addNum; //随机添加数
+    //审核状态1:待审核 2:审核通过 3:审核未通过
+    private Integer isAudit;
+    //审核备注
+    private String remark;
+    //审核失败原因
+    private String failReason;
 }

+ 4 - 0
fs-service/src/main/java/com/fs/hisStore/domain/FsStorePreparedPriceChange.java

@@ -38,6 +38,10 @@ public class FsStorePreparedPriceChange extends BaseEntity{
     @Excel(name = "物流代收自定义金额")
     private BigDecimal payAmount;
 
+    /** 合计金额 */
+    @Excel(name = "商品合计金额")
+    private BigDecimal totalAmount;
+
     /** 销售ID */
     @Excel(name = "销售ID")
     private Long companyUserId;

+ 1 - 1
fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreCartScrmMapper.java

@@ -97,7 +97,7 @@ public interface FsStoreCartScrmMapper
            "<foreach collection='array' item='id' open='(' separator=',' close=')'>#{id}</foreach>"+
             "</script>"})
     int delCart(Long[] ids);
-    @Select("select c.*,p.cate_id,p.product_name,p.image as product_image,p.temp_id,p.product_type,v.price,v.sku as product_attr_name,v.image as product_attr_image,v.stock,v.cost,v.integral,v.weight,v.volume,v.bar_code,v.group_bar_code,v.brokerage,v.brokerage_two,v.brokerage_three,ss.store_id,ss.store_name from fs_store_cart_scrm c left join fs_store_product_scrm p on p.product_id=c.product_id left join fs_store_product_attr_value_scrm v on v.id=c.product_attr_value_id LEFT JOIN fs_store_scrm ss ON p.store_id = ss.store_id where find_in_set(c.id,#{ids})")
+    @Select("select c.*,p.cate_id,p.product_name,p.image as product_image,p.temp_id,p.product_type,p.common_name,v.price,v.sku as product_attr_name,v.image as product_attr_image,v.stock,v.cost,v.integral,v.weight,v.volume,v.bar_code,v.group_bar_code,v.brokerage,v.brokerage_two,v.brokerage_three,ss.store_id,ss.store_name from fs_store_cart_scrm c left join fs_store_product_scrm p on p.product_id=c.product_id left join fs_store_product_attr_value_scrm v on v.id=c.product_attr_value_id LEFT JOIN fs_store_scrm ss ON p.store_id = ss.store_id where find_in_set(c.id,#{ids})")
     List<FsStoreCartQueryVO> selectFsStoreCartListByIds(String ids);
     @Update("update  fs_store_cart_scrm set is_pay=1 where find_in_set(id,#{cartIds})")
     void updateIsPay(String cartIds);

+ 2 - 1
fs-service/src/main/java/com/fs/hisStore/service/IFsStoreOrderScrmService.java

@@ -182,7 +182,8 @@ public interface IFsStoreOrderScrmService
 
     R addUserCart(long userId, String createOrderKey);
 
-    R updateSalseOrderMoney(String createOrderKey, BigDecimal money,BigDecimal payAmount,Integer payType,Long userId);
+    R addUserCartMulti(long userId, String createOrderKey);
+    R updateSalseOrderMoney(String createOrderKey, BigDecimal money,BigDecimal payAmount,BigDecimal totalAmount,Integer payType,Long userId);
 
     Integer selectFsStoreOrderCountByType(Long companyId, long userId, int type);
 

+ 73 - 6
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreOrderScrmServiceImpl.java

@@ -2679,7 +2679,59 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
     }
 
     @Override
-    public R updateSalseOrderMoney(String createOrderKey, BigDecimal money, BigDecimal payAmount,Integer payType,Long userId) {
+    @Transactional
+    public R addUserCartMulti(long userId, String createOrderKey) {
+        String key = redisCache.getCacheObject("createOrderKey:" + createOrderKey);
+        List<FsStoreCartScrmQueryVO> cartsList = redisCache.getCacheObject("orderCarts:" + createOrderKey);
+        if (StringUtils.isEmpty(key)) {
+            throw new CustomException("订单已过期", 501);
+        }
+        List<Long> ids = new ArrayList<>();
+        for (FsStoreCartScrmQueryVO vo : cartsList) {
+            FsStoreCartScrm storeCart = FsStoreCartScrm.builder()
+                    .cartNum(vo.getCartNum())
+                    .productAttrValueId(vo.getProductAttrValueId())
+                    .productId(vo.getProductId())
+                    .userId(userId)
+                    .isPay(0)
+                    .isDel(0)
+                    .isBuy(1)
+                    .changePrice(vo.getPrice())
+                    .build();
+            storeCart.setCreateTime(new Date());
+            cartMapper.insertFsStoreCart(storeCart);
+            ids.add(storeCart.getId());
+        }
+
+        //按店铺分组
+        List<FsStoreCartGroupStoreScrmVO> carts = cartsList.stream()
+                .filter(vo -> vo.getStoreId() != null)
+                .collect(Collectors.groupingBy(
+                        FsStoreCartScrmQueryVO::getStoreId,
+                        LinkedHashMap::new,
+                        Collectors.toList()
+                ))
+                .entrySet().stream()
+                .map(entry -> {
+                    FsStoreCartGroupStoreScrmVO group = new FsStoreCartGroupStoreScrmVO();
+                    FsStoreCartScrmQueryVO firstItem = entry.getValue().get(0);
+                    group.setStoreId(firstItem.getStoreId());
+                    group.setStoreName(firstItem.getStoreName());
+                    group.setCartQueryList(entry.getValue());
+                    return group;
+                })
+                .collect(Collectors.toList());
+
+        //删除REDIS
+//        redisCache.deleteObject("createOrderKey:"+createOrderKey);
+//        redisCache.deleteObject("orderCarts:" + createOrderKey);
+        String[] idArr = key.split("-");
+        return R.ok().put("cartIds", ids).put("companyId", idArr[0]).put("companyUserId", idArr[1]).put("carts", carts);
+
+    }
+
+    @Override
+    public R updateSalseOrderMoney(String createOrderKey, BigDecimal money, BigDecimal payAmount,BigDecimal totalAmount,Integer payType,Long userId) {
         //货到付款自定义金额
         if (payAmount == null) {
             String configJson = configService.selectConfigByKey("store.config");
@@ -2722,23 +2774,26 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
         if(config.getIsPreparedPriceChange() != null && config.getIsPreparedPriceChange()){
             //添加制单改价审核记录
             FsStorePreparedPriceChange preparedPriceChange =new FsStorePreparedPriceChange();
-            preparedPriceChange.setAuditStatus(1);
-            preparedPriceChange.setPayType(payType);
             preparedPriceChange.setMoney(money);//支付金额
+            preparedPriceChange.setAuditStatus(1);//审核状态
+            preparedPriceChange.setPayType(payType);//支付类型
+            preparedPriceChange.setTotalAmount(totalAmount);//合计金额
             preparedPriceChange.setPayAmount(payAmount);//物流改价金额
             preparedPriceChange.setCompanyUserId(userId);//销售ID
             preparedPriceChange.setCreateBy(userId.toString());//创建人
             preparedPriceChange.setCreateOrderKey(createOrderKey);//唯一key
             preparedPriceChange.setCartIds(carts.stream().map(c->c.getId().toString()).collect(Collectors.joining(",")));//购物车IDs
             fsStorePreparedPriceChangeService.insertFsStorePreparedPriceChange(preparedPriceChange);
+
+            //缓存半小时
+            redisCache.setCacheObject("createOrderMoney:" + createOrderKey, money, 30, TimeUnit.MINUTES);
+            redisCache.setCacheObject("createOrderAmount:" + createOrderKey, payAmount, 30, TimeUnit.MINUTES);//物流代收自定义金额
+            redisCache.setCacheObject("createOrderPayType:" + createOrderKey, payType, 30, TimeUnit.MINUTES);//支付类型 1-全付款 3-物流代收(货到付款)
         } else {
             redisCache.setCacheObject("createOrderMoney:" + createOrderKey, money, 24, TimeUnit.HOURS);
             redisCache.setCacheObject("createOrderAmount:" + createOrderKey, payAmount, 24, TimeUnit.HOURS);//物流代收自定义金额
             redisCache.setCacheObject("createOrderPayType:" + createOrderKey, payType, 24, TimeUnit.HOURS);//支付类型 1-全付款 3-物流代收(货到付款)
-
         }
-
-
         return R.ok().put("disabled",config.getIsPreparedPriceChange() != null && config.getIsPreparedPriceChange());
     }
 
@@ -5028,6 +5083,7 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
 
         FsStoreOrderComputedParam computedParam = new FsStoreOrderComputedParam();
         BeanUtils.copyProperties(param, computedParam);
+        computedParam.setCreateOrderKey(param.getOrderKey());
         //计算金额
         FsStoreOrderComputeDTO dto = this.computedOrderMultiStore(userId, computedParam);
         String cartIds = redisCache.getCacheObject("orderKey:" + param.getOrderKey());
@@ -5609,6 +5665,17 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
 //                payPrice = money;
 //            }
 
+            //根据原代码逻辑复制过来复用改价
+            Integer payType = redisCache.getCacheObject("createOrderPayType:" + param.getCreateOrderKey());
+            if (payType != null && payType == 3) {
+                payPrice = redisCache.getCacheObject("createOrderAmount:" + param.getCreateOrderKey());
+            } else {
+                BigDecimal money = redisCache.getCacheObject("createOrderMoney:" + param.getCreateOrderKey());
+                if (money != null) {
+                    payPrice = money;
+                }
+            }
+
             FsOrderMoneyDetailsVo detailsVo = redisCache.getCacheObject("createOrderMoneyDetails:" + param.getCreateOrderKey());
             if (detailsVo != null) {
                 BigDecimal money = detailsVo.getTotalPrice();

+ 24 - 3
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStorePreparedPriceChangeServiceImpl.java

@@ -11,12 +11,15 @@ import com.fs.common.core.redis.RedisCache;
 import com.fs.common.exception.ServiceException;
 import com.fs.common.utils.DateUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fs.hisStore.domain.FsStoreCartScrm;
 import com.fs.hisStore.domain.FsStorePreparedPriceChange;
 import com.fs.hisStore.mapper.FsStoreCartScrmMapper;
 import com.fs.hisStore.mapper.FsStorePreparedPriceChangeMapper;
 import com.fs.hisStore.param.FsStorePreparedPriceChangeParam;
 import com.fs.hisStore.service.IFsStorePreparedPriceChangeService;
+import com.fs.hisStore.vo.FsStoreCartQueryVO;
 import com.fs.hisStore.vo.FsStorePreparedProductInfoVo;
+import com.fs.store.vo.FsStoreCartScrmQueryVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -32,6 +35,9 @@ public class FsStorePreparedPriceChangeServiceImpl extends ServiceImpl<FsStorePr
     @Autowired
     private RedisCache redisCache;
 
+    @Autowired
+    private FsStoreCartScrmMapper cartMapper;
+
     @Autowired
     private FsStoreCartScrmMapper cartScrmMapper;
 
@@ -176,22 +182,37 @@ public class FsStorePreparedPriceChangeServiceImpl extends ServiceImpl<FsStorePr
 
         // 金额配置
         String moneyKey = keyPrefix + "Money:" + orderKey;
-        if (redisCache.hasKey(moneyKey) && isPositiveBigDecimal(fsStorePreparedPriceChange.getMoney())) {
+        if (!redisCache.hasKey(moneyKey) && isPositiveBigDecimal(fsStorePreparedPriceChange.getMoney())) {
             redisCache.setCacheObject(moneyKey, fsStorePreparedPriceChange.getMoney(), 24, TimeUnit.HOURS);
         }
 
         // 物流代收自定义金额
         String amountKey = keyPrefix + "Amount:" + orderKey;
-        if (redisCache.hasKey(amountKey) && isPositiveBigDecimal(fsStorePreparedPriceChange.getPayAmount())) {
+        if (!redisCache.hasKey(amountKey) && isPositiveBigDecimal(fsStorePreparedPriceChange.getPayAmount())) {
             redisCache.setCacheObject(amountKey, fsStorePreparedPriceChange.getPayAmount(), 24, TimeUnit.HOURS);
         }
 
         // 支付类型
         String payTypeKey = keyPrefix + "PayType:" + orderKey;
-        if (redisCache.hasKey(payTypeKey) && fsStorePreparedPriceChange.getPayType() != null) {
+        if (!redisCache.hasKey(payTypeKey) && fsStorePreparedPriceChange.getPayType() != null) {
             redisCache.setCacheObject(payTypeKey, fsStorePreparedPriceChange.getPayType(), 24, TimeUnit.HOURS);
         }
 
+        //购物车重新加入
+        String orderCarsKey = "orderKey:" + fsStorePreparedPriceChange.getCreateOrderKey();
+        if (!redisCache.hasKey(orderCarsKey)) {
+            redisCache.setCacheObject(orderCarsKey, fsStorePreparedPriceChange.getCartIds(), 300, TimeUnit.SECONDS);
+        }
+
+        //购物车信息
+        String orderCartsKey = "orderCarts:" + fsStorePreparedPriceChange.getCreateOrderKey();
+//        if (!redisCache.hasKey(orderCartsKey)) {
+//            List<FsStoreCartScrmQueryVO> carts = cartMapper.selectFsStoreCartMultiStoreListByIds(fsStorePreparedPriceChange.getCartIds(),null);
+//            redisCache.setCacheObject(orderCartsKey, carts, 300, TimeUnit.SECONDS);
+//        }
+        List<FsStoreCartScrmQueryVO> carts = cartMapper.selectFsStoreCartMultiStoreListByIds(fsStorePreparedPriceChange.getCartIds(),null);
+        redisCache.setCacheObject(orderCartsKey, carts, 300, TimeUnit.SECONDS);
+
         return R.ok();
     }
 

+ 15 - 0
fs-service/src/main/java/com/fs/hisStore/vo/FsStoreCartGroupStoreScrmVO.java

@@ -0,0 +1,15 @@
+package com.fs.hisStore.vo;
+
+import com.fs.store.vo.FsStoreCartScrmQueryVO;
+import com.fs.store.vo.FsStoreCartScrmVO;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class FsStoreCartGroupStoreScrmVO {
+    private String storeId;
+    private String storeName;
+    private List<FsStoreCartScrmVO> list;
+    private List<FsStoreCartScrmQueryVO> cartQueryList;
+}

+ 3 - 0
fs-service/src/main/java/com/fs/hisStore/vo/FsStoreCartQueryVO.java

@@ -71,4 +71,7 @@ import java.math.BigDecimal;
     //店铺名称
     private String storeName;
 
+    //通用名称
+    private String commonName;
+
 }

+ 16 - 0
fs-service/src/main/java/com/fs/hisStore/vo/FsStorePreparedProductInfoVo.java

@@ -3,6 +3,7 @@ package com.fs.hisStore.vo;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 
 /**
  * 制单改价商品Vo
@@ -29,6 +30,21 @@ public class FsStorePreparedProductInfoVo implements Serializable {
      **/
     private String productName;
 
+    /**
+     * 合计金额
+     * **/
+    private Integer productType;
+
+    /**
+     * 商品单价
+     **/
+    private BigDecimal price;
+
+    /**
+     * 属性名
+     * **/
+    private String productAttrName;
+
     /**
      * 商品图片
      **/

+ 2 - 1
fs-service/src/main/resources/mapper/course/FsCourseWatchLogMapper.xml

@@ -388,11 +388,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <update id="updateFsCourseWatchLog" parameterType="FsCourseWatchLog">
         update fs_course_watch_log
         <trim prefix="SET" suffixOverrides=",">
+            update_time = CURRENT_TIMESTAMP,
             <if test="userId != null">user_id = #{userId},</if>
             <if test="videoId != null">video_id = #{videoId},</if>
             <if test="logType != null">log_type = #{logType},</if>
             <if test="createTime != null">create_time = #{createTime},</if>
-            <if test="updateTime != null">update_time = #{updateTime},</if>
+<!--            <if test="updateTime != null">update_time = #{updateTime},</if>-->
             <if test="qwExternalContactId != null">qw_external_contact_id = #{qwExternalContactId},</if>
             <if test="duration != null">duration = #{duration},</if>
             <if test="qwUserId != null">qw_user_id = #{qwUserId},</if>

+ 57 - 40
fs-service/src/main/resources/mapper/hisStore/FsStoreCartScrmMapper.xml

@@ -1,41 +1,52 @@
 <?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">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fs.hisStore.mapper.FsStoreCartScrmMapper">
 
     <resultMap type="FsStoreCartScrm" id="FsStoreCartResult">
-        <result property="id"    column="id"    />
-        <result property="userId"    column="user_id"    />
-        <result property="type"    column="type"    />
-        <result property="productId"    column="product_id"    />
-        <result property="productAttrValueId"    column="product_attr_value_id"    />
-        <result property="cartNum"    column="cart_num"    />
-        <result property="createTime"    column="create_time"    />
-        <result property="updateTime"    column="update_time"    />
-        <result property="isPay"    column="is_pay"    />
-        <result property="isDel"    column="is_del"    />
-        <result property="isBuy"    column="is_buy"    />
-        <result property="changePrice"    column="change_price"    />
+        <result property="id" column="id"/>
+        <result property="userId" column="user_id"/>
+        <result property="type" column="type"/>
+        <result property="productId" column="product_id"/>
+        <result property="productAttrValueId" column="product_attr_value_id"/>
+        <result property="cartNum" column="cart_num"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="isPay" column="is_pay"/>
+        <result property="isDel" column="is_del"/>
+        <result property="isBuy" column="is_buy"/>
+        <result property="changePrice" column="change_price"/>
     </resultMap>
 
     <sql id="selectFsStoreCartVo">
-        select id, user_id, type, product_id, product_attr_value_id, cart_num, create_time, update_time, is_pay, is_del,
-               is_buy,change_price from fs_store_cart_scrm
+        select id,
+               user_id,
+               type,
+               product_id,
+               product_attr_value_id,
+               cart_num,
+               create_time,
+               update_time,
+               is_pay,
+               is_del,
+               is_buy,
+               change_price
+        from fs_store_cart_scrm
     </sql>
 
     <select id="selectFsStoreCartList" parameterType="FsStoreCartScrm" resultMap="FsStoreCartResult">
         <include refid="selectFsStoreCartVo"/>
         <where>
-            <if test="userId != null "> and user_id = #{userId}</if>
-            <if test="type != null  and type != ''"> and type = #{type}</if>
-            <if test="productId != null "> and product_id = #{productId}</if>
-            <if test="productAttrValueId != null "> and product_attr_value_id = #{productAttrValueId}</if>
-            <if test="cartNum != null "> and cart_num = #{cartNum}</if>
-            <if test="isPay != null "> and is_pay = #{isPay}</if>
-            <if test="isDel != null "> and is_del = #{isDel}</if>
-            <if test="isBuy != null "> and is_buy = #{isBuy}</if>
-            <if test="changePrice != null "> and change_price = #{changePrice}</if>
+            <if test="userId != null ">and user_id = #{userId}</if>
+            <if test="type != null  and type != ''">and type = #{type}</if>
+            <if test="productId != null ">and product_id = #{productId}</if>
+            <if test="productAttrValueId != null ">and product_attr_value_id = #{productAttrValueId}</if>
+            <if test="cartNum != null ">and cart_num = #{cartNum}</if>
+            <if test="isPay != null ">and is_pay = #{isPay}</if>
+            <if test="isDel != null ">and is_del = #{isDel}</if>
+            <if test="isBuy != null ">and is_buy = #{isBuy}</if>
+            <if test="changePrice != null ">and change_price = #{changePrice}</if>
         </where>
     </select>
 
@@ -58,7 +69,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="isDel != null">is_del,</if>
             <if test="isBuy != null">is_buy,</if>
             <if test="changePrice != null">change_price,</if>
-         </trim>
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="userId != null">#{userId},</if>
             <if test="type != null and type != ''">#{type},</if>
@@ -71,7 +82,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="isDel != null">#{isDel},</if>
             <if test="isBuy != null">#{isBuy},</if>
             <if test="changePrice != null">#{changePrice},</if>
-         </trim>
+        </trim>
     </insert>
 
     <update id="updateFsStoreCart" parameterType="FsStoreCartScrm">
@@ -93,7 +104,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </update>
 
     <delete id="deleteFsStoreCartById" parameterType="Long">
-        delete from fs_store_cart_scrm where id = #{id}
+        delete
+        from fs_store_cart_scrm
+        where id = #{id}
     </delete>
 
     <delete id="deleteFsStoreCartByIds" parameterType="String">
@@ -106,20 +119,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="getFsPreparedProductInfoVoList" resultType="com.fs.hisStore.vo.FsStorePreparedProductInfoVo">
         SELECT
-            cs.id AS cart_id,
-            cs.cart_num,
-            ps.product_id,
-            ps.product_name,
-            ps.image,
-            ps.common_name,
-            ss.store_name,
-            ss.store_id
+        cs.id AS cart_id,
+        cs.cart_num,
+        ps.product_id,
+        ps.product_name,
+        ps.product_type,
+        ps.price,
+        vs.sku AS productAttrName,
+        ps.image,
+        ps.common_name,
+        ss.store_name,
+        ss.store_id
         FROM
-            fs_store_cart_scrm cs
-                INNER JOIN fs_store_product_scrm ps ON cs.product_id = ps.product_id
-                INNER JOIN fs_store_scrm ss ON ss.store_id = ps.store_id
+        fs_store_cart_scrm cs
+        INNER JOIN fs_store_product_scrm ps ON cs.product_id = ps.product_id
+        INNER JOIN fs_store_scrm ss ON ss.store_id = ps.store_id
+        INNER JOIN fs_store_product_attr_value_scrm vs ON vs.product_id = ps.product_id
         WHERE
-            cs.is_del = 0 AND cs.id IN
+        cs.is_del = 0 AND cs.id IN
         <foreach collection="cartIds" item="id" index="index" open="(" separator="," close=")">#{id}</foreach>
     </select>
 

+ 89 - 63
fs-service/src/main/resources/mapper/hisStore/FsStorePreparedPriceChangeMapper.xml

@@ -1,46 +1,62 @@
 <?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">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fs.hisStore.mapper.FsStorePreparedPriceChangeMapper">
-    
+
     <resultMap type="FsStorePreparedPriceChange" id="FsStorePreparedPriceChangeResult">
-        <result property="id"    column="id"    />
-        <result property="cartIds"    column="cart_ids"    />
-        <result property="money"    column="money"    />
-        <result property="payAmount"    column="pay_amount"    />
-        <result property="companyUserId"    column="company_user_id"    />
-        <result property="createOrderKey"    column="create_order_key"    />
-        <result property="createTime"    column="create_time"    />
-        <result property="updateTime"    column="update_time"    />
-        <result property="createBy"    column="create_by"    />
-        <result property="updateBy"    column="update_by"    />
-        <result property="auditStatus"    column="audit_status"    />
+        <result property="id" column="id"/>
+        <result property="cartIds" column="cart_ids"/>
+        <result property="money" column="money"/>
+        <result property="payAmount" column="pay_amount"/>
+        <result property="companyUserId" column="company_user_id"/>
+        <result property="createOrderKey" column="create_order_key"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="createBy" column="create_by"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="auditStatus" column="audit_status"/>
+        <result property="totalAmount" column="total_amount"/>
     </resultMap>
 
     <sql id="selectFsStorePreparedPriceChangeVo">
-        select id, cart_ids, money, pay_amount, company_user_id, create_order_key, create_time, update_time, create_by, update_by,audit_status from fs_store_prepared_price_change
+        select id,
+               cart_ids,
+               money,
+               pay_amount,
+               company_user_id,
+               create_order_key,
+               create_time,
+               update_time,
+               create_by,
+               update_by,
+               audit_status,
+               total_amount
+        from fs_store_prepared_price_change
     </sql>
 
-    <select id="selectFsStorePreparedPriceChangeList" parameterType="FsStorePreparedPriceChange" resultMap="FsStorePreparedPriceChangeResult">
+    <select id="selectFsStorePreparedPriceChangeList" parameterType="FsStorePreparedPriceChange"
+            resultMap="FsStorePreparedPriceChangeResult">
         <include refid="selectFsStorePreparedPriceChangeVo"/>
         <where>
-            <if test="money != null "> and money = #{money}</if>
-            <if test="payAmount != null "> and pay_amount = #{payAmount}</if>
-            <if test="auditStatus != null "> and audit_status = #{auditStatus}</if>
-            <if test="cartIds != null  and cartIds != ''"> and cart_ids = #{cartIds}</if>
-            <if test="companyUserId != null "> and company_user_id = #{companyUserId}</if>
-            <if test="createOrderKey != null  and createOrderKey != ''"> and create_order_key = #{createOrderKey}</if>
+            <if test="money != null ">and money = #{money}</if>
+            <if test="payAmount != null ">and pay_amount = #{payAmount}</if>
+            <if test="auditStatus != null ">and audit_status = #{auditStatus}</if>
+            <if test="cartIds != null  and cartIds != ''">and cart_ids = #{cartIds}</if>
+            <if test="companyUserId != null ">and company_user_id = #{companyUserId}</if>
+            <if test="createOrderKey != null  and createOrderKey != ''">and create_order_key = #{createOrderKey}</if>
         </where>
         order by id desc
     </select>
-    
-    <select id="selectFsStorePreparedPriceChangeById" parameterType="String" resultMap="FsStorePreparedPriceChangeResult">
+
+    <select id="selectFsStorePreparedPriceChangeById" parameterType="String"
+            resultMap="FsStorePreparedPriceChangeResult">
         <include refid="selectFsStorePreparedPriceChangeVo"/>
         where id = #{id}
     </select>
-        
-    <insert id="insertFsStorePreparedPriceChange" parameterType="FsStorePreparedPriceChange" useGeneratedKeys="true" keyProperty="id">
+
+    <insert id="insertFsStorePreparedPriceChange" parameterType="FsStorePreparedPriceChange" useGeneratedKeys="true"
+            keyProperty="id">
         insert into fs_store_prepared_price_change
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="cartIds != null and cartIds != ''">cart_ids,</if>
@@ -55,7 +71,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="auditStatus != null">audit_status,</if>
             <if test="payType != null">pay_type,</if>
             <if test="auditRemark != null">audit_remark ,</if>
-         </trim>
+            <if test="totalAmount != null">total_amount ,</if>
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="cartIds != null and cartIds != ''">#{cartIds},</if>
             <if test="money != null">#{money},</if>
@@ -69,7 +86,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="auditStatus != null">#{auditStatus},</if>
             <if test="payType != null">#{payType},</if>
             <if test="auditRemark != null">#{auditRemark} ,</if>
-         </trim>
+            <if test="totalAmount != null">#{totalAmount} ,</if>
+        </trim>
     </insert>
 
     <update id="updateFsStorePreparedPriceChange" parameterType="FsStorePreparedPriceChange">
@@ -87,63 +105,71 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="auditStatus != null">audit_status = #{auditStatus},</if>
             <if test="payType != null">pay_type = #{payType},</if>
             <if test="auditRemark != null">audit_remark = #{auditRemark} ,</if>
+            <if test="totalAmount != null">total_amount = #{totalAmount} ,</if>
         </trim>
         where id = #{id}
     </update>
 
     <delete id="deleteFsStorePreparedPriceChangeById" parameterType="String">
-        delete from fs_store_prepared_price_change where id = #{id}
+        delete
+        from fs_store_prepared_price_change
+        where id = #{id}
     </delete>
 
     <delete id="deleteFsStorePreparedPriceChangeByIds" parameterType="String">
-        delete from fs_store_prepared_price_change where id in 
+        delete from fs_store_prepared_price_change where id in
         <foreach item="id" collection="array" open="(" separator="," close=")">
             #{id}
         </foreach>
     </delete>
 
     <update id="batchAudit">
-        update fs_store_prepared_price_change set audit_status = #{auditStatus},audit_remark = #{auditRemark} where id in
+        update fs_store_prepared_price_change set audit_status = #{auditStatus},audit_remark = #{auditRemark} where id
+        in
         <foreach item="id" collection="ids" open="(" separator="," close=")">
             #{id}
         </foreach>
     </update>
 
-    <select id="selectFsStorePreparedPriceChangePageList" resultType="com.fs.hisStore.domain.FsStorePreparedPriceChange">
+    <select id="selectFsStorePreparedPriceChangePageList"
+            resultType="com.fs.hisStore.domain.FsStorePreparedPriceChange">
         SELECT
-            pc.*,
-            GROUP_CONCAT(
-                    ps.product_name
-                        SEPARATOR '|'
-                ) AS matched_products,
-            cu.nick_name
+        pc.*,
+        GROUP_CONCAT(
+        ps.product_name
+        SEPARATOR '|'
+        ) AS matched_products,
+        cu.nick_name
         FROM
-            fs_store_prepared_price_change pc
-                LEFT JOIN fs_store_cart_scrm cs
-                          ON FIND_IN_SET(cs.id, REPLACE(pc.cart_ids, ' ', ''))
-                LEFT JOIN fs_store_product_scrm ps
-                          ON cs.product_id = ps.product_id
-                LEFT JOIN fs_store_scrm ss
-                          ON ss.store_id = ps.store_id
-                LEFT JOIN company_user cu ON pc.company_user_id = cu.user_id
+        fs_store_prepared_price_change pc
+        LEFT JOIN fs_store_cart_scrm cs
+        ON FIND_IN_SET(cs.id, REPLACE(pc.cart_ids, ' ', ''))
+        LEFT JOIN fs_store_product_scrm ps
+        ON cs.product_id = ps.product_id
+        LEFT JOIN fs_store_scrm ss
+        ON ss.store_id = ps.store_id
+        LEFT JOIN company_user cu ON pc.company_user_id = cu.user_id
         WHERE
-            cs.is_del = 0
-            <if test="matchedProducts != null and matchedProducts != ''">
-               AND pc.id IN (
-                SELECT DISTINCT pc_sub.id
-                FROM fs_store_prepared_price_change pc_sub
-                LEFT JOIN fs_store_cart_scrm cs_sub
-                ON FIND_IN_SET(cs_sub.id, REPLACE(pc_sub.cart_ids, ' ', ''))
-                LEFT JOIN fs_store_product_scrm ps_sub
-                ON cs_sub.product_id = ps_sub.product_id
-                WHERE ps_sub.product_name LIKE CONCAT('%',#{matchedProducts},'%')
-                )
-            </if>
-            <if test="nickName != null and nickName != ''">
-                AND cu.nick_name LIKE CONCAT('%',#{nickName},'%')
-            </if>
-             <if test="auditStatus != null "> AND audit_status = #{auditStatus}</if>
+        cs.is_del = 0
+        <if test="matchedProducts != null and matchedProducts != ''">
+            AND pc.id IN (
+            SELECT DISTINCT pc_sub.id
+            FROM fs_store_prepared_price_change pc_sub
+            LEFT JOIN fs_store_cart_scrm cs_sub
+            ON FIND_IN_SET(cs_sub.id, REPLACE(pc_sub.cart_ids, ' ', ''))
+            LEFT JOIN fs_store_product_scrm ps_sub
+            ON cs_sub.product_id = ps_sub.product_id
+            WHERE ps_sub.product_name LIKE CONCAT('%',#{matchedProducts},'%')
+            )
+        </if>
+        <if test="nickName != null and nickName != ''">
+            AND cu.nick_name LIKE CONCAT('%',#{nickName},'%')
+        </if>
+        <if test="auditStatus != null ">AND audit_status = #{auditStatus}</if>
+        <if test="companyUserId != null ">AND company_user_id = #{companyUserId}</if>
         GROUP BY
-            pc.id
+        pc.id
+        ORDER BY
+        pc.id DESC
     </select>
 </mapper>

+ 10 - 1
fs-user-app/src/main/java/com/fs/app/controller/store/CompanyOrderScrmController.java

@@ -88,6 +88,7 @@ public class CompanyOrderScrmController extends AppBaseController {
                                    @RequestParam("createOrderKey")String createOrderKey,
                                    @RequestParam(value = "money",required = false) BigDecimal money,
                                    @RequestParam(value = "payAmount",required = false) BigDecimal payAmount,
+                                   @RequestParam(value = "totalAmount",required = false) BigDecimal totalAmount,
                                    @RequestParam(value = "payType",required = false) Integer payType,
                                    HttpServletRequest request){
         Long userId=redisCache.getCacheObject("company-user-token:"+token);
@@ -100,7 +101,7 @@ public class CompanyOrderScrmController extends AppBaseController {
         if (payAmount == null){
             payAmount = BigDecimal.ZERO;
         }
-        return orderService.updateSalseOrderMoney(createOrderKey,money,payAmount,payType,userId);
+        return orderService.updateSalseOrderMoney(createOrderKey,money,payAmount,totalAmount,payType,userId);
     }
 
     @ApiOperation("商品改价")
@@ -127,6 +128,14 @@ public class CompanyOrderScrmController extends AppBaseController {
         return orderService.addUserCart(Long.parseLong(getUserId()),createOrderKey);
     }
 
+    @Login
+    @ApiOperation("添加用户购物车")
+    @GetMapping("/addUserCartMulti")
+    public R addUserCartMulti(@RequestParam("createOrderKey")String createOrderKey, HttpServletRequest request){
+        return orderService.addUserCartMulti(Long.parseLong(getUserId()),createOrderKey);
+    }
+
+
 
     @ApiOperation("改订单价格")
     @GetMapping("/editOrderMoney")

+ 31 - 1
fs-user-app/src/main/java/com/fs/app/controller/store/FsStorePreparedPriceChangeController.java

@@ -1,6 +1,10 @@
 package com.fs.app.controller.store;
 
 import com.fs.app.annotation.Login;
+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.hisStore.param.FsStorePreparedPriceChangeParam;
 import com.fs.common.core.domain.R;
 import com.fs.common.core.redis.RedisCache;
@@ -18,7 +22,7 @@ import java.util.List;
 
 @RestController
 @RequestMapping("/shop/change")
-public class FsStorePreparedPriceChangeController {
+public class FsStorePreparedPriceChangeController extends BaseController {
     @Autowired
     public RedisCache redisCache;
 
@@ -33,7 +37,16 @@ public class FsStorePreparedPriceChangeController {
      */
     @GetMapping("/list")
     public R list(FsStorePreparedPriceChangeParam param) {
+        Long userId = redisCache.getCacheObject("company-user-token:" + param.getToken());
+        CompanyUser companyUser = companyUserService.selectCompanyUserById(userId);
+        if (companyUser == null || companyUser.getDelFlag().equals("1")) {
+            return R.error("用户不存在");
+        }
+        if (!companyUser.getStatus().equals("0")) {
+            return R.error("用户已禁用");
+        }
         PageHelper.startPage(param.getPageNum(), param.getPageSize());
+        param.setCompanyUserId(userId);
         List<FsStorePreparedPriceChange> list = fsStorePreparedPriceChangeService.selectFsStorePreparedPriceChangeList(param);
         PageInfo<FsStorePreparedPriceChange> listPageInfo=new PageInfo<>(list);
         return R.ok().put("data",listPageInfo);
@@ -63,4 +76,21 @@ public class FsStorePreparedPriceChangeController {
 
         return fsStorePreparedPriceChangeService.sharePrepare(param.getId(), userId);
     }
+
+    /**
+     * 获取销售制单改价审核记录详细信息
+     */
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id) {
+        return AjaxResult.success(fsStorePreparedPriceChangeService.selectFsStorePreparedPriceChangeById(id));
+    }
+
+    /**
+     * 删除销售制单改价审核记录
+     */
+    @Log(title = "销售制单改价审核记录", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String[] ids) {
+        return toAjax(fsStorePreparedPriceChangeService.deleteFsStorePreparedPriceChangeByIds(ids));
+    }
 }

+ 1 - 0
fs-user-app/src/main/java/com/fs/app/controller/store/StoreOrderScrmController.java

@@ -659,6 +659,7 @@ public class StoreOrderScrmController extends AppBaseController {
                 o.setReqSeqId("store-" + storePayment.getPayCode());
                 o.setTransAmt(storePayment.getPayMoney().toString());
                 o.setGoodsDesc("商城订单支付");
+                o.setAppId(param.getAppId());
                 HuifuCreateOrderResult result = huiFuService.createOrder(o);
                 //创建订单
                 if (result.getBank_code() != null && result.getBank_code().equals("00000000")) {