Преглед изворни кода

Merge branch 'master' of lhm/kmall-haikong into master

lhm пре 3 година
родитељ
комит
42119c9a82
22 измењених фајлова са 233 додато и 99 уклоњено
  1. 2 0
      kmall-admin/src/main/java/com/kmall/admin/dao/MkActivitiesPromotionDao.java
  2. 2 0
      kmall-admin/src/main/java/com/kmall/admin/dao/mk/MkActivitiesAssociationDao.java
  3. 2 0
      kmall-admin/src/main/java/com/kmall/admin/dao/mk/MkActivitiesDao.java
  4. 2 0
      kmall-admin/src/main/java/com/kmall/admin/dao/mk/MkActivitiesScoreDao.java
  5. 11 0
      kmall-admin/src/main/java/com/kmall/admin/haikong/vo/CalculateOrderDiscountPriceVO.java
  6. 2 0
      kmall-admin/src/main/java/com/kmall/admin/service/MkActivitiesPromotionService.java
  7. 5 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/MkActivitiesPromotionServiceImpl.java
  8. 80 62
      kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java
  9. 5 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/MkActivitiesScoreServiceImpl.java
  10. 35 5
      kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/MkActivitiesServiceImpl.java
  11. 2 0
      kmall-admin/src/main/java/com/kmall/admin/service/mk/MkActivitiesScoreService.java
  12. 2 0
      kmall-admin/src/main/java/com/kmall/admin/service/mk/MkActivitiesService.java
  13. 4 1
      kmall-admin/src/main/resources/mybatis/mapper/MkActivitiesPromotionDao.xml
  14. 4 1
      kmall-admin/src/main/resources/mybatis/mapper/mk/MkActivitiesAssociationDao.xml
  15. 7 0
      kmall-admin/src/main/resources/mybatis/mapper/mk/MkActivitiesDao.xml
  16. 3 0
      kmall-admin/src/main/resources/mybatis/mapper/mk/MkActivitiesScoreDao.xml
  17. 16 0
      kmall-admin/src/main/webapp/WEB-INF/page/sale/sale.html
  18. 2 2
      kmall-admin/src/main/webapp/WEB-INF/page/sys/main.html
  19. 2 2
      kmall-admin/src/main/webapp/WEB-INF/page/vip/mall2pointsrules.html
  20. 3 1
      kmall-admin/src/main/webapp/js/mk/mkactivityform.js
  21. 27 24
      kmall-admin/src/main/webapp/js/sale/sale.js
  22. 15 1
      kmall-admin/src/main/webapp/js/vip/mall2pointsrules.js

+ 2 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/MkActivitiesPromotionDao.java

@@ -42,4 +42,6 @@ public interface MkActivitiesPromotionDao extends BaseDao<MkActivitiesPromotionE
      * @return 限时特价活动规则
      */
     List<MkActivitiesPromotionEntity> queryListByMkaIdAndStoreId(@Param("mkaId") int mkaId, @Param("storeId") String storeId);
+
+    void deleteBatchByMkaId(@Param("mkaId") int mkaId);
 }

+ 2 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/mk/MkActivitiesAssociationDao.java

@@ -23,4 +23,6 @@ public interface MkActivitiesAssociationDao extends BaseDao<MkActivitiesAssociat
     int updateByMkaId(MkActivitiesAssociationEntity mkActivitiesAssociationEntity);
 
     MkActivitiesAssociationEntity queryByMkCodeAndTopic(@Param("mkCode") String mkCode, @Param("mkaTopic") String mkaTopic, @Param("mkaStoreId") String mkaStoreId);
+
+    void deleteByMkaId(@Param("mkaId") Long mkaId);
 }

+ 2 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/mk/MkActivitiesDao.java

@@ -34,4 +34,6 @@ public interface MkActivitiesDao extends BaseDao<MkActivitiesEntity> {
      * @return 满赠活动列表
      */
     List<MkActivitiesEntity> queryByNowByMz(@Param("storeId") String storeId, @Param("currentTime") String currentTime);
+
+    List<MkActivitiesEntity> queryListByMkaIdList(List<Integer> mkaIdList);
 }

+ 2 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/mk/MkActivitiesScoreDao.java

@@ -28,4 +28,6 @@ public interface MkActivitiesScoreDao extends BaseDao<MkActivitiesScoreEntity> {
      * @return 活动
      */
     List<MkActivitiesScoreEntity> queryActivityInfoByMkaIdList(List<Long> mkaIdList);
+
+    void deleteBatchByMkaId(@Param("mkaId") int mkaId);
 }

+ 11 - 0
kmall-admin/src/main/java/com/kmall/admin/haikong/vo/CalculateOrderDiscountPriceVO.java

@@ -15,6 +15,8 @@ public class CalculateOrderDiscountPriceVO {
 
     private String memberCode;
 
+    private Boolean useScore;
+
     private List<GoodsDetailsDto> goodsList;
 
     public CalculateOrderDiscountPriceVO() {
@@ -50,11 +52,20 @@ public class CalculateOrderDiscountPriceVO {
         this.goodsList = goodsList;
     }
 
+    public Boolean getUseScore() {
+        return useScore;
+    }
+
+    public void setUseScore(Boolean useScore) {
+        this.useScore = useScore;
+    }
+
     @Override
     public String toString() {
         return "CalculateOrderDiscountPriceVO{" +
                 "storeId='" + storeId + '\'' +
                 ", memberCode='" + memberCode + '\'' +
+                ", useScore='" + useScore + '\'' +
                 ", goodsList=" + goodsList +
                 '}';
     }

+ 2 - 0
kmall-admin/src/main/java/com/kmall/admin/service/MkActivitiesPromotionService.java

@@ -112,4 +112,6 @@ public interface MkActivitiesPromotionService {
      * @return      限时特价活动规则
      */
     List<MkActivitiesPromotionEntity> queryListByMkaIdAndStoreId(int mkaId, String storeId);
+
+    void deleteBatchByMkaId(int mkaId);
 }

+ 5 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/MkActivitiesPromotionServiceImpl.java

@@ -168,4 +168,9 @@ public class MkActivitiesPromotionServiceImpl implements MkActivitiesPromotionSe
     public List<MkActivitiesPromotionEntity> queryListByMkaIdAndStoreId(int mkaId, String storeId) {
         return mkActivitiesPromotionDao.queryListByMkaIdAndStoreId(mkaId, storeId);
     }
+
+    @Override
+    public void deleteBatchByMkaId(int mkaId) {
+        mkActivitiesPromotionDao.deleteBatchByMkaId(mkaId);
+    }
 }

+ 80 - 62
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

@@ -2464,6 +2464,19 @@ public class OrderServiceImpl implements OrderService {
                 userEntity.setOpenId(userEntity.getMobile());
                 userEntity.setMemberCode(memberCode);
                 userDao.update(userEntity);
+
+                MerchUserEntity merchUserEntity = merchUserDao.queryObjectByStoreId(storeId.longValue(), userEntity.getId().longValue());
+
+                if (Objects.isNull(merchUserEntity)) {
+                    merchUserEntity = new MerchUserEntity();
+                    merchUserEntity.setMerchSn(user.getMerchSn());
+                    merchUserEntity.setStoreId(storeId);
+                    merchUserEntity.setUserId(userEntity.getId());
+                    merchUserEntity.setCreateTime(new Date());
+                    merchUserEntity.setIsLoadGoods("0");
+                    merchUserDao.save(merchUserEntity);
+                }
+
             }
 
             // 判断该用户是否是生日
@@ -4628,77 +4641,82 @@ public class OrderServiceImpl implements OrderService {
         calculateOrderDiscountPriceResponseVO.setMemberCurrentAvailableScore(0);
         calculateOrderDiscountPriceResponseVO.setDeductionScore(0);
 
-        // 计算完活动优惠后,计算积分抵扣。(活动与积分抵扣不互斥)
-        if (!org.springframework.util.StringUtils.isEmpty(memberCode)) {
-            String memberInfoByCodeResponseJson;
-            Response<Object> response;
-            try {
-                // 查询会员信息
-                if (memberCode.trim().length() == 11) {
-                    memberInfoByCodeResponseJson = haiKongMemberTemplate.getMemberInfoByPhone("{\"phone\":\"" + memberCode + "\"}");
-                } else {
-                    memberInfoByCodeResponseJson = haiKongMemberTemplate.getMemberInfoByCode("{\"code\":\"" + memberCode + "\"}");
-                }
-                response = JacksonUtil.fromListJson(memberInfoByCodeResponseJson, new TypeReference<Response<Object>>() {
-                });
-                if (Objects.isNull(response)) {
-                    LOGGER.error("请求会员系统出现异常!error:{}", memberInfoByCodeResponseJson);
-                    if (ErrorCodeConstants.MemberSysErrorCodeEnum.CODE_401.getCode().equals(response.getCode())) {
-                        JedisUtil.del(Constants.MEMBER_SYS_ACCESS_TOKEN_REDIS_KEY);
-                        throw new ServiceException(String.format("请求会员系统出现异常!会员码:%s,error:%s", memberCode, ErrorCodeConstants.MemberSysErrorCodeEnum.CODE_401.getDesc()));
+        // 根据收银端开关选择是否适用积分抵扣。
+        boolean useScore = Objects.isNull(calculateOrderDiscountPriceVo.getUseScore()) || calculateOrderDiscountPriceVo.getUseScore();
+        if (useScore) {
+            // 计算完活动优惠后,计算积分抵扣。(活动与积分抵扣不互斥)
+            if (!org.springframework.util.StringUtils.isEmpty(memberCode)) {
+                String memberInfoByCodeResponseJson;
+                Response<Object> response;
+                try {
+                    // 查询会员信息
+                    if (memberCode.trim().length() == 11) {
+                        memberInfoByCodeResponseJson = haiKongMemberTemplate.getMemberInfoByPhone("{\"phone\":\"" + memberCode + "\"}");
+                    } else {
+                        memberInfoByCodeResponseJson = haiKongMemberTemplate.getMemberInfoByCode("{\"code\":\"" + memberCode + "\"}");
                     }
-                    throw new ServiceException(String.format("请求会员系统出现异常!会员码:%s,error:%s", memberCode, memberInfoByCodeResponseJson));
-                }
-            } catch (Exception e) {
-                LOGGER.error("请求会员系统失败或处理响应失败!", e);
-                throw new ServiceException(e);
-            }
-            BigDecimal afterDiscountPrice;
-            if (response.getSuccess()) {
-                MemberInfoDTO memberInfoDTO = JacksonUtil.fromStringJson(JacksonUtil.toJson(response.getData()), MemberInfoDTO.class);
-                assert memberInfoDTO != null : String.format("会员码:【%s】会员信息错误!%s", memberCode, JacksonUtil.toJson(response));
-                // 查询会员表
-                calculateOrderDiscountPriceResponseVO.setOpenId(memberInfoDTO.getOpenId());
-                calculateOrderDiscountPriceResponseVO.setMemberPhone(memberInfoDTO.getPhone());
-                calculateOrderDiscountPriceResponseVO.setMemberCurrentAvailableScore(memberInfoDTO.getScore());
-                calculateOrderDiscountPriceResponseVO.setLevelName(memberInfoDTO.getLevelName());
-                UserEntity userEntity = userService.queryByOpenId(memberInfoDTO.getOpenId());
-                String openId = memberInfoDTO.getOpenId();
-                if (Objects.isNull(userEntity)) {
-                    userEntity = new UserEntity();
-                    userEntity.setOpenId(openId);
-                    userEntity.setMemberCode(memberCode);
-                    userEntity.setMobile(openId);
-                    userService.save(userEntity);
-                } else {
-                    userEntity.setOpenId(openId);
-                    userEntity.setMobile(openId);
-                    userEntity.setMemberCode(memberCode);
-                    userService.update(userEntity);
+                    response = JacksonUtil.fromListJson(memberInfoByCodeResponseJson, new TypeReference<Response<Object>>() {
+                    });
+                    if (Objects.isNull(response)) {
+                        LOGGER.error("请求会员系统出现异常!error:{}", memberInfoByCodeResponseJson);
+                        if (ErrorCodeConstants.MemberSysErrorCodeEnum.CODE_401.getCode().equals(response.getCode())) {
+                            JedisUtil.del(Constants.MEMBER_SYS_ACCESS_TOKEN_REDIS_KEY);
+                            throw new ServiceException(String.format("请求会员系统出现异常!会员码:%s,error:%s", memberCode, ErrorCodeConstants.MemberSysErrorCodeEnum.CODE_401.getDesc()));
+                        }
+                        throw new ServiceException(String.format("请求会员系统出现异常!会员码:%s,error:%s", memberCode, memberInfoByCodeResponseJson));
+                    }
+                } catch (Exception e) {
+                    LOGGER.error("请求会员系统失败或处理响应失败!", e);
+                    throw new ServiceException(e);
                 }
-                Integer score = memberInfoDTO.getScore();
-                if (Objects.nonNull(score) && score > 0) {
-                    // 有积分
-                    afterDiscountPrice = calculatePreferentialPrice(orderTotalPrice, score, memberCode, openId, calculateOrderDiscountPriceResponseVO, goodsDetailsDtos, promotionSkuList, mkActivitiesEntityList);
-                    LOGGER.info("会员【{}】,当前积分:{},积分抵扣后的订单金额:{},积分抵扣前的订单金额:{}", openId, score, afterDiscountPrice, orderTotalPrice);
-                    calculateOrderDiscountPriceResponseVO.setOrderTotalPrice(afterDiscountPrice);
-                    calculateOrderDiscountPriceResponseVO.setGoodsDetailsDtos(goodsDetailsDtos);
-                    calculateOrderDiscountPriceResponseVO.setBeforeScore(score);
-                    // 订单完成后再添加积分消费记录,以及同步积分信息
-                    return calculateOrderDiscountPriceResponseVO;
+                BigDecimal afterDiscountPrice;
+                if (response.getSuccess()) {
+                    MemberInfoDTO memberInfoDTO = JacksonUtil.fromStringJson(JacksonUtil.toJson(response.getData()), MemberInfoDTO.class);
+                    assert memberInfoDTO != null : String.format("会员码:【%s】会员信息错误!%s", memberCode, JacksonUtil.toJson(response));
+                    // 查询会员表
+                    calculateOrderDiscountPriceResponseVO.setOpenId(memberInfoDTO.getOpenId());
+                    calculateOrderDiscountPriceResponseVO.setMemberPhone(memberInfoDTO.getPhone());
+                    calculateOrderDiscountPriceResponseVO.setMemberCurrentAvailableScore(memberInfoDTO.getScore());
+                    calculateOrderDiscountPriceResponseVO.setLevelName(memberInfoDTO.getLevelName());
+                    UserEntity userEntity = userService.queryByOpenId(memberInfoDTO.getOpenId());
+                    String openId = memberInfoDTO.getOpenId();
+                    if (Objects.isNull(userEntity)) {
+                        userEntity = new UserEntity();
+                        userEntity.setOpenId(openId);
+                        userEntity.setMemberCode(memberCode);
+                        userEntity.setMobile(openId);
+                        userService.save(userEntity);
+                    } else {
+                        userEntity.setOpenId(openId);
+                        userEntity.setMobile(openId);
+                        userEntity.setMemberCode(memberCode);
+                        userService.update(userEntity);
+                    }
+                    Integer score = memberInfoDTO.getScore();
+                    if (Objects.nonNull(score) && score > 0) {
+                        // 有积分
+                        afterDiscountPrice = calculatePreferentialPrice(orderTotalPrice, score, memberCode, openId, calculateOrderDiscountPriceResponseVO, goodsDetailsDtos, promotionSkuList, mkActivitiesEntityList);
+                        LOGGER.info("会员【{}】,当前积分:{},积分抵扣后的订单金额:{},积分抵扣前的订单金额:{}", openId, score, afterDiscountPrice, orderTotalPrice);
+                        calculateOrderDiscountPriceResponseVO.setOrderTotalPrice(afterDiscountPrice);
+                        calculateOrderDiscountPriceResponseVO.setGoodsDetailsDtos(goodsDetailsDtos);
+                        calculateOrderDiscountPriceResponseVO.setBeforeScore(score);
+                        // 订单完成后再添加积分消费记录,以及同步积分信息
+                        return calculateOrderDiscountPriceResponseVO;
+                    } else {
+                        LOGGER.error("会员【{}】积分为0,积分抵扣失败!", openId);
+                        return calculateOrderDiscountPriceResponseVO;
+                    }
                 } else {
-                    LOGGER.error("会员【{}】积分为0,积分抵扣失败!", openId);
-                    return calculateOrderDiscountPriceResponseVO;
+                    LOGGER.error("查询会员信息失败!响应结果:{}", memberInfoByCodeResponseJson);
+                    throw new ServiceException(String.format("会员码:%s,错误码:%s,错误信息:%s", memberCode, response.getErrorCode(), response.getErrorMessage()));
                 }
-            } else {
-                LOGGER.error("查询会员信息失败!响应结果:{}", memberInfoByCodeResponseJson);
-                throw new ServiceException(String.format("会员码:%s,错误码:%s,错误信息:%s", memberCode, response.getErrorCode(), response.getErrorMessage()));
             }
         }
         calculateOrderDiscountPriceResponseVO.setGoodsDetailsDtos(goodsDetailsDtos);
         orderTotalPrice = BigDecimal.ZERO;
         for (GoodsDetailsDto goodsDetailsDto : goodsDetailsDtos) {
-            orderTotalPrice = orderTotalPrice.add(goodsDetailsDto.getActualPaymentAmount());
+            orderTotalPrice = orderTotalPrice.add(goodsDetailsDto.getActualPaymentAmount()
+                    .multiply(BigDecimal.valueOf(goodsDetailsDto.getSellVolume())));
         }
         calculateOrderDiscountPriceResponseVO.setOrderTotalPrice(orderTotalPrice);
         return calculateOrderDiscountPriceResponseVO;

+ 5 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/MkActivitiesScoreServiceImpl.java

@@ -83,6 +83,11 @@ public class MkActivitiesScoreServiceImpl implements MkActivitiesScoreService {
         return mkActivitiesScoreDao.deleteBatch(ids);
     }
 
+    @Override
+    public void deleteBatchByMkaId(int mkaId) {
+        mkActivitiesScoreDao.deleteBatchByMkaId(mkaId);
+    }
+
     /**
      * 导入
      *

+ 35 - 5
kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/MkActivitiesServiceImpl.java

@@ -5,6 +5,9 @@ import com.kmall.admin.dao.mk.MkActivitiesDao;
 import com.kmall.admin.entity.mk.MkActivitiesAssociationEntity;
 import com.kmall.admin.entity.mk.MkActivitiesEntity;
 import com.kmall.admin.fromcomm.entity.SysUserEntity;
+import com.kmall.admin.haikong.constant.Constants;
+import com.kmall.admin.service.MkActivitiesPromotionService;
+import com.kmall.admin.service.mk.MkActivitiesScoreService;
 import com.kmall.admin.service.mk.MkActivitiesService;
 import com.kmall.admin.utils.ShiroUtils;
 import com.kmall.common.utils.BeanUtils;
@@ -14,9 +17,8 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 营销活动表Service实现类
@@ -32,6 +34,12 @@ public class MkActivitiesServiceImpl implements MkActivitiesService {
     @Autowired
     private MkActivitiesAssociationDao mkActivitiesAssociationDao;
 
+    @Autowired
+    private MkActivitiesScoreService mkActivitiesScoreService;
+
+    @Autowired
+    private MkActivitiesPromotionService mkActivitiesPromotionService;
+
     @Override
     public MkActivitiesEntity queryObject(Long mkaId) {
         return mkActivitiesDao.queryObject(mkaId);
@@ -90,15 +98,32 @@ public class MkActivitiesServiceImpl implements MkActivitiesService {
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public int delete(Long mkaId) {
+        MkActivitiesEntity mkActivitiesEntity = queryObject(mkaId);
+        deleteByTopic(mkActivitiesEntity);
+        mkActivitiesAssociationDao.deleteByMkaId(mkActivitiesEntity.getMkaId());
         return mkActivitiesDao.delete(mkaId);
     }
 
+    private void deleteByTopic(MkActivitiesEntity mkActivitiesEntity) {
+        int mkaId = mkActivitiesEntity.getMkaId().intValue();
+        if (Constants.ActivityTopicEnum.JFDK.getTopicCode().equals(mkActivitiesEntity.getMkaTopic())) {
+            mkActivitiesScoreService.deleteBatchByMkaId(mkaId);
+        } else if (Constants.ActivityTopicEnum.LSCX.getTopicCode().equals(mkActivitiesEntity.getMkaTopic())) {
+            mkActivitiesPromotionService.deleteBatchByMkaId(mkaId);
+        }
+    }
+
     @Override
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public int deleteBatch(Long[]mkaIds) {
         mkActivitiesDao.deleteBatch(mkaIds);
-
+        List<Integer> integerList = Arrays.stream(mkaIds).map(Long::intValue).collect(Collectors.toList());
+        List<MkActivitiesEntity> mkActivitiesEntities = queryListByMkaIdList(integerList);
+        for (MkActivitiesEntity mkActivitiesEntity : mkActivitiesEntities) {
+            deleteByTopic(mkActivitiesEntity);
+        }
         mkActivitiesAssociationDao.deleteBatch(mkaIds);
         return 1;
     }
@@ -132,4 +157,9 @@ public class MkActivitiesServiceImpl implements MkActivitiesService {
     public List<MkActivitiesEntity> queryByTopic(String storeId, String currentTime, String topic) {
         return mkActivitiesDao.queryByTopic(storeId,currentTime,topic);
     }
+
+    @Override
+    public List<MkActivitiesEntity> queryListByMkaIdList(List<Integer> mkaIdList) {
+        return mkActivitiesDao.queryListByMkaIdList(mkaIdList);
+    }
 }

+ 2 - 0
kmall-admin/src/main/java/com/kmall/admin/service/mk/MkActivitiesScoreService.java

@@ -73,6 +73,8 @@ public interface MkActivitiesScoreService {
      */
     int deleteBatch(Integer[]ids);
 
+    void deleteBatchByMkaId(int mkaId);
+
     /**
      * 导入
      * @param scoreReductionDTOList 导入的数据

+ 2 - 0
kmall-admin/src/main/java/com/kmall/admin/service/mk/MkActivitiesService.java

@@ -89,4 +89,6 @@ public interface MkActivitiesService {
     List<MkActivitiesEntity> queryByNowByMz(String storeId, String currentTime);
 
     List<MkActivitiesEntity> queryByTopic(String storeId, String format, String topic);
+
+    List<MkActivitiesEntity> queryListByMkaIdList(List<Integer> mkaIdList);
 }

+ 4 - 1
kmall-admin/src/main/resources/mybatis/mapper/MkActivitiesPromotionDao.xml

@@ -161,8 +161,11 @@
 			#{mapId}
 		</foreach>
 	</delete>
+    <delete id="deleteBatchByMkaId">
+		delete from mk_activities_promotion where mka_id = #{mkaId}
+	</delete>
 
-	<select id="queryByBarCode" resultType="com.kmall.admin.entity.MkActivitiesPromotionEntity">
+    <select id="queryByBarCode" resultType="com.kmall.admin.entity.MkActivitiesPromotionEntity">
 		select
 			`map_id`,
 			`product_name`,

+ 4 - 1
kmall-admin/src/main/resources/mybatis/mapper/mk/MkActivitiesAssociationDao.xml

@@ -142,8 +142,11 @@
 			#{mkaId}
 		</foreach>
 	</delete>
+    <delete id="deleteByMkaId">
+		delete from mk_activities_association where mka_id = #{mkaId}
+	</delete>
 
-	<update id="updateByMkaId" parameterType="com.kmall.admin.entity.mk.MkActivitiesAssociationEntity">
+    <update id="updateByMkaId" parameterType="com.kmall.admin.entity.mk.MkActivitiesAssociationEntity">
 		update mk_activities_association
 		<set>
 			<if test="mkCode != null">`mk_code` = #{mkCode}, </if>

+ 7 - 0
kmall-admin/src/main/resources/mybatis/mapper/mk/MkActivitiesDao.xml

@@ -226,4 +226,11 @@
 			and mka_topic = 'mz'
 			and mka_status = 1
 	</select>
+
+    <select id="queryListByMkaIdList" resultMap="mkActivitiesMap">
+		select * from mk_activities where mka_id in
+		<foreach collection="list" open="(" separator="," close=")" item="item">
+			#{item}
+		</foreach>
+	</select>
 </mapper>

+ 3 - 0
kmall-admin/src/main/resources/mybatis/mapper/mk/MkActivitiesScoreDao.xml

@@ -185,5 +185,8 @@
 			#{id}
 		</foreach>
 	</delete>
+    <delete id="deleteBatchByMkaId">
+		delete from mk_activities_score where mka_id = #{mkaId}
+	</delete>
 
 </mapper>

+ 16 - 0
kmall-admin/src/main/webapp/WEB-INF/page/sale/sale.html

@@ -316,6 +316,10 @@
                                             <label for="customPhone" class="control-label">会员码:</label>
                                             <input autocomplete="off" type="text" ref="couponBarCode" size="60%" id="couponBarCode" @on-enter="calculateOrderPriceSubmit" />
                                         </div>
+                                        <div style="margin-top: 30px">
+                                            <label class="control-label" >是否适用积分进行抵扣:</label>
+                                            <i-switch v-model="switch1" />
+                                        </div>
                                     </div>
                                     <div class="modal-footer">
                                         <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
@@ -334,6 +338,18 @@
                                         <h4 class="modal-title" id="payModalLabel">付款码</h4>
                                     </div>
                                     <div class="modal-body">
+                                        <div style="margin-bottom: 50px">
+                                            <ul style="display: inline-block">
+                                                <li><h5 style="border: white;padding: 8px;">总件数:{{totalCount}}</h5></li>
+                                                <li><h5 style="border: white;padding: 8px;">总价:{{totalPrice}}</h5></li>
+                                                <li><h5 style="border: white;padding: 8px;color: red;">实际支付价:{{actualPrice}}</h5></li>
+                                            </ul>
+                                            <ul style="display: inline-block">
+                                                <li><h5 style="border: white;padding: 8px">会员等级:{{levelName}}</h5></li>
+                                                <li><h5 style="border: white;padding: 8px">会员当前积分:{{memberCurrentAvailableScore}}</h5></li>
+                                                <li><h5 style="border: white;padding: 8px">抵扣积分:{{deductionScore}}</h5></li>
+                                            </ul>
+                                        </div>
                                         <form>
                                             <div class="form-group">
                                                 <i-input id="payCode" class="payCodeInput" @on-enter="submitOrder" ref="payCode" size="60%" placeholder="请输入付款码"/>

+ 2 - 2
kmall-admin/src/main/webapp/WEB-INF/page/sys/main.html

@@ -118,7 +118,7 @@
             </div>
         </div>
     </div>
-    <table class="table table-hover table-responsive table-bordered">
+    <!--<table class="table table-hover table-responsive table-bordered">
         <tr>
             <th colspan="5">会员购买率:<span style="color: red;">{{hygml}}%</span>(会员购买率=已付款订单会员数÷会员总数)</th>
         </tr>
@@ -152,7 +152,7 @@
             <td>{{mhydds}}</td>
             <td>{{mhygws}}</td>
         </tr>
-    </table>
+    </table>-->
 <!--    <table class="table table-hover table-responsive table-bordered">-->
 <!--        <tr>-->
 <!--            <th>总点击数:{{hitCount}}; 每千点击订单数:{{average1000}}; 每千点击购物额:{{averageSales1000}}</th>-->

+ 2 - 2
kmall-admin/src/main/webapp/WEB-INF/page/vip/mall2pointsrules.html

@@ -40,8 +40,8 @@
 		<i-form ref="formValidate" :model="mall2PointsRules" :rules="ruleValidate" :label-width="80">
             <Form-item  label="积分类型" prop="pointsType" style="height: 30px;">
                 <i-select v-model="mall2PointsRules.pointsType" placeholder="积分类型" label-in-value>
-                    <i-option v-for="category in categories" :value="category.value"
-                              :key="category.value">{{category.name}}
+                    <i-option v-for="category in categoryObj" :value="category.id"
+                              :key="category.id">{{category.name}}
                     </i-option>
                 </i-select>
             </Form-item>

+ 3 - 1
kmall-admin/src/main/webapp/js/mk/mkactivityform.js

@@ -52,7 +52,7 @@ $(function () {
     $("#jqGrid").jqGrid("setFrozenColumns");
 
     var marketing =
-        {'lscx': '临时促销',/*'yhq': '优惠券',*/'rchd': '日常活动','mysy': '买N送一',/*'mj': '满减', 'mz': '满赠','dz': '打折','zhjsp': '组合价商品',*/'drjbj':'第二件半价'};
+        {'lscx': '临时促销','jfdk': '积分抵扣'/*'yhq': '优惠券','rchd': '日常活动','mysy': '买N送一',/*'mj': '满减', 'mz': '满赠','dz': '打折','zhjsp': '组合价商品','drjbj':'第二件半价'*/};
 
 
     let mkCode = getQueryString("mkCode");
@@ -93,6 +93,8 @@ $(function () {
                         mkaTopicName = marketing.zhjsp;
                     else if(value === 'drjbj')
                         mkaTopicName = marketing.drjbj;
+                    else if(value === 'jfdk')
+                        mkaTopicName = marketing.jfdk;
                     return mkaTopicName == null? value : mkaTopicName;
                 }},
             {label: '商户名称', name: 'merchName', width: 200, align: 'center'},

+ 27 - 24
kmall-admin/src/main/webapp/js/sale/sale.js

@@ -20,7 +20,7 @@ window.onbeforeunload = function(){
 function debounce(fn,delay){
     var timer=null
     return function(){
-        console.log(timer);
+        // console.log(timer);
         if(timer){
             clearTimeout(timer)
         }
@@ -33,7 +33,7 @@ function calculateGoodsPrice(r){
     var rMap = r.map;
     var barCode = r.goodsDetails.prodBarcode;
     var brand = r.goodsDetails.brand;
-    console.log(rMap);
+    // console.log(rMap);
 
     /*if(rMap.yhq){
         for(var i in rMap.yhq){
@@ -258,7 +258,7 @@ function calculateGoodsByMysy(goodsDetails,type){
                 // goodsDetails.activity = "买"+buyNum+"送1";
                 // 清除该商品买一送一条件
                 vm.boughtNum.delete(goodsDetails.prodBarcode);
-                console.log(vm.boughtNum);
+                // console.log(vm.boughtNum);
             }else{
                 // 如果不相等,已经购买数量+1
                 vm.boughtNum.set(goodsDetails.prodBarcode , boughtNum+1);
@@ -484,7 +484,7 @@ function calculateGoodsByZhjsp(r){
             }
         });
     }
-    console.log(vm.compareCombinationPrice);
+    // console.log(vm.compareCombinationPrice);
 }
 
 const delay = (function () {
@@ -622,7 +622,9 @@ let vm = new Vue({
         // 是否点击了加号或减号和操作新扫描商品的标识
         clickFlag: false,
         // 是否点击了计算活动价格
-        calActivityFlag: false
+        calActivityFlag: false,
+        // 是否适用积分进行抵扣
+        switch1: true
     },
     watch: {
         prodBarcode (){
@@ -684,7 +686,7 @@ let vm = new Vue({
         },
         queryInveResponse:function(){
             $.get("../order/queryInveResponse/"+vm.orderSn1, function(r){
-                console.log(r.resultMessage);
+                // console.log(r.resultMessage);
                 let resultString = "";
                 if(r.resultMessage != null && r.resultMessage.length > 0){
                     for(let i = 0 ; i < r.resultMessage.length; i ++){
@@ -698,9 +700,9 @@ let vm = new Vue({
             vm.storeId = sessionStorage.getItem("storeId");
             var thisGoods = {};
             var overflowLi = this.$refs.overflowLi;
-            console.log("vm.$refs.saomiao.value===>" + vm.$refs.saomiao.value);
+            // console.log("vm.$refs.saomiao.value===>" + vm.$refs.saomiao.value);
             let scanSellVolume = calScanSellVolume(vm.$refs.saomiao.value);
-            console.log("scanSellVolume===>" + scanSellVolume);
+            // console.log("scanSellVolume===>" + scanSellVolume);
             $.get("../goods/details/"+vm.prodBarcode+"/"+vm.storeId+"/"+vm.prodBarcode+"/"+scanSellVolume, function (r) {
                 if (r.code == 0) {
                     if(r.goodsDetails.length>1) {
@@ -735,7 +737,7 @@ let vm = new Vue({
                             handle(r.goodsDetails,"add");
                             vm.openSku = false;
                             var data = Object.assign({}, JSON.parse(JSON.stringify(r.goodsDetails)));
-                            console.log("商品详情===>" + JSON.stringify(data));
+                            // console.log("商品详情===>" + JSON.stringify(data));
                             vm.calGoodsList.push(data);
                             //此时必须异步执行滚动条滑动至底部
                             setTimeout(()=>{
@@ -751,9 +753,9 @@ let vm = new Vue({
         saveOld:function(){
             vm.storeId = sessionStorage.getItem("storeId");
             var overflowLi = this.$refs.overflowLi;
-            console.log("vm.$refs.saomiao.value===>" + vm.$refs.saomiao.value);
+            // console.log("vm.$refs.saomiao.value===>" + vm.$refs.saomiao.value);
             let scanSellVolume = calScanSellVolume(vm.$refs.saomiao.value);
-            console.log("scanSellVolume===>" + scanSellVolume);
+            // console.log("scanSellVolume===>" + scanSellVolume);
                 $.get("../goods/detailsOld/"+vm.prodBarcode+"/"+vm.storeId+"/"+scanSellVolume, function (r) {
                     if (r.code == 0) {
                         r.goodsDetails.sellVolume = 1;
@@ -763,7 +765,7 @@ let vm = new Vue({
                         handle(r.goodsDetails,"add");
                         vm.openSku = false;
                         var data = Object.assign({}, JSON.parse(JSON.stringify(r.goodsDetails)));
-                        console.log("商品详情=1=>" + JSON.stringify(data));
+                        // console.log("商品详情=1=>" + JSON.stringify(data));
                         vm.calGoodsList.push(data);
                         //此时必须异步执行滚动条滑动至底部
                         setTimeout(()=>{
@@ -838,7 +840,7 @@ let vm = new Vue({
 
         },
         selectItem:function(value) {
-            console.log(value);
+            // console.log(value);
         },
         deleteItem:function(value){
             vm.calActivityFlag = false;
@@ -923,7 +925,7 @@ let vm = new Vue({
                 alert("购物车中没有商品");
                 return;
             }
-            console.log(vm.pendingOrderMap.size);
+            // console.log(vm.pendingOrderMap.size);
             if(vm.pendingOrderMap.size >= 3){
                 alert("订单挂起最多支持3单");
                 return;
@@ -969,7 +971,7 @@ let vm = new Vue({
                 return ;
             }
             var pendingObject = vm.pendingOrderMap.get(key);
-            console.log(pendingObject);
+            // console.log(pendingObject);
             vm.goodsList = pendingObject.goodsList;
             vm.totalPrice = pendingObject.totalPrice;
             vm.totalCount = pendingObject.totalCount;
@@ -990,7 +992,7 @@ let vm = new Vue({
                 return;
             }
 
-            console.log("vm.clickFlag==>" + vm.clickFlag);
+            // console.log("vm.clickFlag==>" + vm.clickFlag);
             if (vm.clickFlag && !vm.calActivityFlag) {
                 // 提示点击
                 alert("请先计算活动优惠价!");
@@ -1297,9 +1299,9 @@ let vm = new Vue({
                     success: function (r) {
                         if (r.ticket != null) {
                             // printArea(r.ticket);
-                            console.log("核销打印前,订单号: " + vm.currentOrderNo);
+                            // console.log("核销打印前,订单号: " + vm.currentOrderNo);
                             var content = getPrintContentOrder(r.ticket, printArea);
-                            console.log("核销打印后,小票码: " + vm.pickUpCode + ",订单号: " + r.ticket.ticketHead.orderId);
+                            // console.log("核销打印后,小票码: " + vm.pickUpCode + ",订单号: " + r.ticket.ticketHead.orderId);
 
                         }else{
                             alert("打印小票失败");
@@ -2068,7 +2070,7 @@ function toPayOrder(payCode){
                  'addrUser':addrUser,
                  'status':status,
                 };
-    console.log(JSON.stringify(param));
+    // console.log(JSON.stringify(param));
     vm.parCode = "";
     $.ajax({
         type: "POST",
@@ -2076,7 +2078,7 @@ function toPayOrder(payCode){
         contentType: "application/json",
         data: JSON.stringify(param),
         success: function (r) {
-            console.log(r);
+            // console.log(r);
             if (r.code == 0) {
                 if (r.resultObj != null) {
                     $(".form-group input[type=text]").each(function(){
@@ -2084,7 +2086,7 @@ function toPayOrder(payCode){
                     })
                     // 打印小票码小票
                     var content = getPrintContent(r.resultObj);
-                    console.log(content);
+                    // console.log(content);
                     printArea2(content);
                     vm.goodsList = [];
                     vm.customname = '' ;
@@ -2131,8 +2133,8 @@ function toRefund(){
 calScanSellVolume = function (prodBarcode) {
     let goodsList = vm.goodsList;
 
-    console.log("prodBarcode typeof===>" + typeof prodBarcode);
-    console.log("prodBarcode===>" + prodBarcode);
+    // console.log("prodBarcode typeof===>" + typeof prodBarcode);
+    // console.log("prodBarcode===>" + prodBarcode);
     if (goodsList === null || goodsList.length === 0) {
         return 2;
     }
@@ -2154,9 +2156,10 @@ calculateOrderPrice = function() {
     let param = {
         'storeId': sessionStorage.getItem("storeId"),
         'memberCode': vm.$refs.couponBarCode.value,
+        'useScore': vm.switch1,
         'goodsList' : vm.goodsList
     };
-    // console.log("请求参数===>" + JSON.stringify(param));
+    console.log("请求参数===>" + JSON.stringify(param));
 
     $.ajax({
         type: "POST",

+ 15 - 1
kmall-admin/src/main/webapp/js/vip/mall2pointsrules.js

@@ -96,7 +96,21 @@ let vm = new Vue({
 		},
 		q: {
 		    name: ''
-		}
+		},
+		categoryObj: [
+			{
+				id : 0,
+				name : '门店'
+			},
+			{
+				id : 1,
+				name : '商品类别'
+			},
+			{
+				id : 2,
+				name : '门店商品'
+			}
+		]
 	},
 	methods: {
 		query: function () {