Selaa lähdekoodia

新增用户积分记录表

大大的豆芽 9 kuukautta sitten
vanhempi
commit
9984112727

+ 18 - 17
yiqi-api/src/main/java/com/yiqi/api/controller/WeAppCouponItemController.java

@@ -52,11 +52,11 @@ public class WeAppCouponItemController extends BaseController {
 
     @ApiOperation("获取我的优惠券列表")
     @PostMapping(value = "findPage")
-    public R<List<AppCouponItemListVO>> findPage(@RequestBody @Valid WeAppCouponItemQueryDTO weAppCouponItemQueryDTO) throws Exception{
+    public R<List<AppCouponItemListVO>> findPage(@RequestBody @Valid WeAppCouponItemQueryDTO weAppCouponItemQueryDTO) throws Exception {
         LambdaQueryWrapper<AppCouponItem> queryWrapper = new QueryWrapper<AppCouponItem>().lambda().eq(AppCouponItem::getAppUserId, AuthHolder.userId());
 
-        if(!StringUtils.isEmpty(weAppCouponItemQueryDTO.getCouponStatus())){
-            switch (weAppCouponItemQueryDTO.getCouponStatus()){
+        if (!StringUtils.isEmpty(weAppCouponItemQueryDTO.getCouponStatus())) {
+            switch (weAppCouponItemQueryDTO.getCouponStatus()) {
                 case "0"://未使用
                 {
                     queryWrapper.eq(AppCouponItem::getIsUsed, SysBoolType.NO.getCode()).ge(AppCouponItem::getEndDate, DateUtils.dateTimeNow("yyyy-MM-dd"));
@@ -64,20 +64,21 @@ public class WeAppCouponItemController extends BaseController {
                 }
                 case "1"://已使用
                 {
-                    queryWrapper.eq(AppCouponItem::getIsUsed,SysBoolType.YES.getCode());
+                    queryWrapper.eq(AppCouponItem::getIsUsed, SysBoolType.YES.getCode());
                     break;
                 }
                 case "2"://已过期
                 {
-                    queryWrapper.eq(AppCouponItem::getIsUsed,SysBoolType.NO.getCode()).lt(AppCouponItem::getEndDate,DateUtils.dateTimeNow("yyyy-MM-dd"));
+                    queryWrapper.eq(AppCouponItem::getIsUsed, SysBoolType.NO.getCode()).lt(AppCouponItem::getEndDate, DateUtils.dateTimeNow("yyyy-MM-dd"));
                     break;
                 }
             }
         }
+        queryWrapper.orderByAsc(AppCouponItem::getEndDate);
         List<AppCouponItem> list = appCouponItemService.page(new Page<>(weAppCouponItemQueryDTO.getPageNum(),
-                                                                weAppCouponItemQueryDTO.getPageSize()),
-                                                                queryWrapper).getRecords();
-        if (CollUtil.isEmpty(list)){
+                        weAppCouponItemQueryDTO.getPageSize()),
+                queryWrapper).getRecords();
+        if (CollUtil.isEmpty(list)) {
             return R.ok(new ArrayList<AppCouponItemListVO>());
         }
         List<AppCouponItemListVO> voList = new ArrayList<>();
@@ -91,10 +92,10 @@ public class WeAppCouponItemController extends BaseController {
     }
 
     private String getIsValidBy(AppCouponItem appCouponItem) {
-        if (appCouponItem == null){
+        if (appCouponItem == null) {
             return SysBoolType.NO.getCode();
         }
-        if (SysBoolType.NO.getCode().equals(appCouponItem.getIsUsed()) && appCouponItem.getEndDate().compareTo(DateUtils.getNowDate(DateUtils.YYYY_MM_DD)) >= 0){
+        if (SysBoolType.NO.getCode().equals(appCouponItem.getIsUsed()) && appCouponItem.getEndDate().compareTo(DateUtils.getNowDate(DateUtils.YYYY_MM_DD)) >= 0) {
             return SysBoolType.YES.getCode();
         }
         return SysBoolType.NO.getCode();
@@ -102,21 +103,21 @@ public class WeAppCouponItemController extends BaseController {
 
     @ApiOperation("查询优惠券适用组织")
     @GetMapping(value = "orgListByCouponId")
-    public R<List<SysOrg>> orgListByCouponId(@RequestParam @ApiParam("优惠券ID") Long couponItemId){
+    public R<List<SysOrg>> orgListByCouponId(@RequestParam @ApiParam("优惠券ID") Long couponItemId) {
         return R.ok(appCouponItemService.orgListByCouponId(couponItemId));
     }
 
     @ApiOperation("查询优惠券适用衣服")
     @GetMapping(value = "clothListByCouponId")
-    public R<List<ClothItem>> clothListByCouponId(@RequestParam @ApiParam("优惠券ID") Long couponItemId){
-        AppCouponItem appCouponItem = appCouponItemService.getOne(new QueryWrapper<AppCouponItem>().lambda().eq(AppCouponItem::getId,couponItemId));
+    public R<List<ClothItem>> clothListByCouponId(@RequestParam @ApiParam("优惠券ID") Long couponItemId) {
+        AppCouponItem appCouponItem = appCouponItemService.getOne(new QueryWrapper<AppCouponItem>().lambda().eq(AppCouponItem::getId, couponItemId));
         List<Long> clothIds = appCouponTypeApplyClothService.list(new QueryWrapper<AppCouponTypeApplyCloth>().lambda()
-                .eq(AppCouponTypeApplyCloth::getCouponTypeId,appCouponItem.getCouponTypeId())
-                .eq(AppCouponTypeApplyCloth::getDelFlag, DeleteStatus.OK.getCode())).stream()
+                        .eq(AppCouponTypeApplyCloth::getCouponTypeId, appCouponItem.getCouponTypeId())
+                        .eq(AppCouponTypeApplyCloth::getDelFlag, DeleteStatus.OK.getCode())).stream()
                 .map(AppCouponTypeApplyCloth::getClothItemId).collect(Collectors.toList());
-        if(clothIds.size() == 0){
+        if (clothIds.size() == 0) {
             return R.ok(new ArrayList<>());
         }
-        return R.ok(clothItemService.list(new QueryWrapper<ClothItem>().lambda().in(ClothItem::getId,clothIds)));
+        return R.ok(clothItemService.list(new QueryWrapper<ClothItem>().lambda().in(ClothItem::getId, clothIds)));
     }
 }

+ 3 - 2
yiqi-api/src/main/java/com/yiqi/api/controller/WeAppUserController.java

@@ -73,7 +73,7 @@ public class WeAppUserController extends BaseController {
     @GetMapping(value = "getCashInfo")
     public R<WeAppUserCashVO> getCashInfo(@RequestParam(required = false) @ApiParam("订单类型(0=洗衣订单,1=商品订单,2=生活服务订单,3=汽车美容订单)") String orderType) throws Exception {
         RechargePasswordCard rechargePasswordCard = rechargePasswordCardService.selectTotalBalanceGroupByAppUser(AuthHolder.userId(), orderType);
-
+        AppUser appUser = appUserService.getById(AuthHolder.userId());
         WeAppUserCashVO weAppUserCashVO = new WeAppUserCashVO();
         if (rechargePasswordCard != null) {
             weAppUserCashVO.setRechargeBalance(rechargePasswordCard.getRechargeBalance());
@@ -85,9 +85,10 @@ public class WeAppUserController extends BaseController {
             weAppUserCashVO.setPointBalance(0);
             weAppUserCashVO.setWelfareBalance(BigDecimal.ZERO);
         }
+        weAppUserCashVO.setPointBalance(appUser.getPoint());
         weAppUserCashVO.setCouponNum(appCouponItemService.count(new QueryWrapper<AppCouponItem>().lambda()
                 .eq(AppCouponItem::getAppUserId, AuthHolder.userId())
-                .le(AppCouponItem::getEndDate, DateUtils.getNowDate())
+                .ge(AppCouponItem::getEndDate, DateUtils.getNowDate())
                 .eq(AppCouponItem::getIsUsed, SysBoolType.NO.getCode())));
         return R.ok(weAppUserCashVO);
     }

+ 2 - 3
yiqi-api/src/main/java/com/yiqi/notify/WxPayController.java

@@ -54,8 +54,7 @@ public class WxPayController extends BaseController {
         log.info("微信回调参数:{}", body);
 
         // 转换为Map
-        Map<String, String> params = JSONObject.parseObject(body, new TypeReference<Map<String, String>>() {
-        });
+        Map<String, String> params = WxPayKit.xmlToMap(body);
         boolean check = WxPayKit.verifyNotify(params, WechatPayService.pay_key);
 
         if (!check) {
@@ -70,7 +69,7 @@ public class WxPayController extends BaseController {
                 String outTradeSn = params.get("transaction_id");
                 String buyerUserId = params.get("open_id");
                 //使用订单号当锁
-                synchronized (orderSn.intern()){
+                synchronized (orderSn.intern()) {
                     // 另起线程处理业务
                     payService.unifiePaySuccessNotify(orderSn, null, outTradeSn);
                 }

+ 71 - 0
yiqi-common/src/main/java/com/yiqi/app/domain/AppUserPointLog.java

@@ -0,0 +1,71 @@
+package com.yiqi.app.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.yiqi.common.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.yiqi.common.core.domain.BaseEntity;
+import lombok.Data;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+
+/**
+ * 积分日志对象 app_user_point_log
+ *
+ * @author douya
+ * @date 2024-09-04
+ */
+@ApiModel("积分日志")
+@TableName("app_user_point_log")
+@Data
+public class AppUserPointLog extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * $column.columnComment
+     */
+    @ApiModelProperty("$column.columnComment")
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 用户ID
+     */
+    @Excel(name = "用户ID")
+    @ApiModelProperty("用户ID")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long appUserId;
+
+    /**
+     * 积分数
+     */
+    @Excel(name = "积分数")
+    @ApiModelProperty("积分数")
+    private Integer point;
+
+    /**
+     * 积分收支类型 1:增加 2:减少
+     */
+    @Excel(name = "积分收支类型 1:增加 2:减少")
+    @ApiModelProperty("积分收支类型 1:增加 2:减少")
+    private String type;
+
+    /**
+     * 关联订单
+     */
+    @Excel(name = "关联信息")
+    @ApiModelProperty("关联信息")
+    private String relationId;
+
+    /**
+     * 积分来源类型:1充值赠送,2消费赠送,3积分兑换,4系统增加
+     */
+    @Excel(name = "积分来源类型:1充值赠送,2消费赠送,3积分兑换,4系统增加")
+    @ApiModelProperty("积分来源类型:1充值赠送,2消费赠送,3积分兑换,4系统增加")
+    private String sourceType;
+
+
+
+}

+ 87 - 0
yiqi-common/src/main/java/com/yiqi/app/service/IAppUserPointLogService.java

@@ -0,0 +1,87 @@
+package com.yiqi.app.service;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yiqi.app.domain.AppUserPointLog;
+import com.yiqi.common.enums.MemberPointSourceEnum;
+
+/**
+ * 积分日志Service接口
+ *
+ * @author douya
+ * @date 2024-09-04
+ */
+public interface IAppUserPointLogService extends IService<AppUserPointLog> {
+
+    //<editor-folder desc="基础函数">
+
+    /**
+     * 查询积分日志
+     *
+     * @param id 积分日志主键
+     * @return 积分日志
+     */
+    public AppUserPointLog selectAppUserPointLogById(Integer id);
+
+    /**
+     * 查询积分日志列表
+     *
+     * @param appUserPointLog 积分日志
+     * @return 积分日志集合
+     */
+    public List<AppUserPointLog> selectAppUserPointLogList(AppUserPointLog appUserPointLog);
+
+    /**
+     * 新增积分日志
+     *
+     * @param appUserPointLog 积分日志
+     * @return 结果
+     */
+    public int insertAppUserPointLog(AppUserPointLog appUserPointLog);
+
+    /**
+     * 修改积分日志
+     *
+     * @param appUserPointLog 积分日志
+     * @return 结果
+     */
+    public int updateAppUserPointLog(AppUserPointLog appUserPointLog);
+
+    /**
+     * 批量删除积分日志
+     *
+     * @param ids 需要删除的积分日志主键集合
+     * @return 结果
+     */
+    public int deleteAppUserPointLogByIds(Integer[] ids);
+
+    /**
+     * 删除积分日志信息
+     *
+     * @param id 积分日志主键
+     * @return 结果
+     */
+    public int deleteAppUserPointLogById(Integer id);
+
+    /**
+     * 增减会员积分
+     *
+     * @param appUserId  会员id
+     * @param point      本次添加的积分 负数为扣 正数为加
+     * @param from       积分来源
+     * @param remark     描述
+     */
+    void addPoint(Long appUserId, Integer point, String relationId, MemberPointSourceEnum from, String remark);
+
+
+    /**
+     * 扣除会员积分
+     *
+     * @param appUserId  会员id
+     * @param point      本次添加的积分
+     * @param from       积分来源
+     * @param remark     描述
+     */
+    void reducePoint(Long appUserId, Integer point, String relationId, MemberPointSourceEnum from, String remark);
+}

+ 37 - 0
yiqi-common/src/main/java/com/yiqi/common/enums/MemberPointSourceEnum.java

@@ -0,0 +1,37 @@
+package com.yiqi.common.enums;
+
+/**
+ * Enum - 积分来源
+ *
+ * @author lh
+ * @since 2018-11-13
+ */
+public enum MemberPointSourceEnum {
+
+    RECHARGEADD("RECHARGEADD", "充值赠送"),
+    CONSUMEADD("CONSUMEADD", "消费赠送"),
+    SYSSUB("SYSSUB", "系统扣除"),
+    SYAADD("SYAADD", "系统增加"),
+    CONSUME("CONSUME", "积分抵扣"),
+    REFUND_ADD("REFUND_ADD", "积分抵扣退款返还"),
+    REFUND_DEDUCT("REFUND_DEDUCT", "退款积分扣除"),
+    INVITE_MEMBER("INVITE_MEMBER", "邀请新用户"),
+    SIGN("SIGN", "签到");
+    private final String code;
+    private final String info;
+
+    MemberPointSourceEnum(String code, String info) {
+        this.code = code;
+        this.info = info;
+    }
+
+    public String getCode()
+    {
+        return code;
+    }
+
+    public String getInfo()
+    {
+        return info;
+    }
+}

+ 0 - 1
yiqi-common/src/main/java/com/yiqi/order/service/IPayService.java

@@ -17,7 +17,6 @@ public interface IPayService {
      */
     public PayResponseDTO faceToFacePay(PayOrderFaceToFaceDTO payOrderFaceToFaceDTO);
 
-
     /**
      * 订单查询
      */

+ 7 - 0
yiqi-core/src/main/java/com/yiqi/app/mapper/AppUserMapper.java

@@ -66,4 +66,11 @@ public interface AppUserMapper extends BaseMapper<AppUser> {
      * @return 结果
      */
     public int deleteAppUserByIds(Long[] ids);
+
+    /**
+     * 更新用户积分
+     * @param appUserId
+     * @param point
+     */
+    public void updateUserPoint(@Param("appUserId") Long appUserId, @Param("point") Integer point);
 }

+ 67 - 0
yiqi-core/src/main/java/com/yiqi/app/mapper/AppUserPointLogMapper.java

@@ -0,0 +1,67 @@
+package com.yiqi.app.mapper;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import com.yiqi.app.domain.AppUserPointLog;
+
+/**
+ * 积分日志Mapper接口
+ *
+ * @author douya
+ * @date 2024-09-04
+ */
+@Mapper
+public interface AppUserPointLogMapper extends BaseMapper<AppUserPointLog> {
+    //<editor-folder desc="基础韩素">
+
+    /**
+     * 查询积分日志
+     *
+     * @param id 积分日志主键
+     * @return 积分日志
+     */
+    public AppUserPointLog selectAppUserPointLogById(Integer id);
+
+    /**
+     * 查询积分日志列表
+     *
+     * @param appUserPointLog 积分日志
+     * @return 积分日志集合
+     */
+    public List<AppUserPointLog> selectAppUserPointLogList(AppUserPointLog appUserPointLog);
+
+    /**
+     * 新增积分日志
+     *
+     * @param appUserPointLog 积分日志
+     * @return 结果
+     */
+    public int insertAppUserPointLog(AppUserPointLog appUserPointLog);
+
+    /**
+     * 修改积分日志
+     *
+     * @param appUserPointLog 积分日志
+     * @return 结果
+     */
+    public int updateAppUserPointLog(AppUserPointLog appUserPointLog);
+
+    /**
+     * 删除积分日志
+     *
+     * @param id 积分日志主键
+     * @return 结果
+     */
+    public int deleteAppUserPointLogById(Integer id);
+
+    /**
+     * 批量删除积分日志
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteAppUserPointLogByIds(Integer[] ids);
+    //</editor-folder>
+}

+ 131 - 0
yiqi-core/src/main/java/com/yiqi/app/service/impl/AppUserPointLogServiceImpl.java

@@ -0,0 +1,131 @@
+package com.yiqi.app.service.impl;
+
+import java.util.List;
+
+import com.yiqi.app.mapper.AppUserMapper;
+import com.yiqi.common.enums.MemberPointSourceEnum;
+import com.yiqi.common.utils.DateUtils;
+import com.yiqi.common.utils.SecurityUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.yiqi.app.mapper.AppUserPointLogMapper;
+import com.yiqi.app.domain.AppUserPointLog;
+import com.yiqi.app.service.IAppUserPointLogService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * 积分日志Service业务层处理
+ *
+ * @author douya
+ * @date 2024-09-04
+ */
+@Service
+public class AppUserPointLogServiceImpl extends ServiceImpl<AppUserPointLogMapper, AppUserPointLog> implements IAppUserPointLogService {
+
+    @Autowired
+    private AppUserMapper appUserMapper;
+
+    //<editor-folder desc="基础韩素">
+
+    /**
+     * 查询积分日志
+     *
+     * @param id 积分日志主键
+     * @return 积分日志
+     */
+    @Override
+    public AppUserPointLog selectAppUserPointLogById(Integer id) {
+        return baseMapper.selectAppUserPointLogById(id);
+    }
+
+    /**
+     * 查询积分日志列表
+     *
+     * @param appUserPointLog 积分日志
+     * @return 积分日志
+     */
+    @Override
+    public List<AppUserPointLog> selectAppUserPointLogList(AppUserPointLog appUserPointLog) {
+        return baseMapper.selectAppUserPointLogList(appUserPointLog);
+    }
+
+    /**
+     * 新增积分日志
+     *
+     * @param appUserPointLog 积分日志
+     * @return 结果
+     */
+    @Override
+    public int insertAppUserPointLog(AppUserPointLog appUserPointLog) {
+        appUserPointLog.setCreateTime(DateUtils.getNowDate());
+        return baseMapper.insert(appUserPointLog);
+    }
+
+    /**
+     * 修改积分日志
+     *
+     * @param appUserPointLog 积分日志
+     * @return 结果
+     */
+    @Override
+    public int updateAppUserPointLog(AppUserPointLog appUserPointLog) {
+        appUserPointLog.setUpdateTime(DateUtils.getNowDate());
+        return baseMapper.updateById(appUserPointLog);
+    }
+
+    /**
+     * 批量删除积分日志
+     *
+     * @param ids 需要删除的积分日志主键
+     * @return 结果
+     */
+    @Override
+    public int deleteAppUserPointLogByIds(Integer[] ids) {
+        return baseMapper.deleteAppUserPointLogByIds(ids);
+    }
+
+    /**
+     * 删除积分日志信息
+     *
+     * @param id 积分日志主键
+     * @return 结果
+     */
+    @Override
+    public int deleteAppUserPointLogById(Integer id) {
+        return baseMapper.deleteAppUserPointLogById(id);
+    }
+
+    @Override
+    public void addPoint(Long appUserId, Integer point, String relationId, MemberPointSourceEnum from, String remark) {
+        AppUserPointLog appUserPointLog = new AppUserPointLog();
+        appUserPointLog.setAppUserId(appUserId);
+        appUserPointLog.setPoint(point);
+        appUserPointLog.setType("1");
+        appUserPointLog.setRelationId(relationId);
+        appUserPointLog.setSourceType(from.getCode());
+        appUserPointLog.setRemark(remark);
+        appUserPointLog.buildCreateData();
+        this.insertAppUserPointLog(appUserPointLog);
+        // 更新用户积分
+        appUserMapper.updateUserPoint(appUserId, point);
+    }
+
+    @Override
+    public void reducePoint(Long appUserId, Integer point, String relationId, MemberPointSourceEnum from, String remark) {
+        AppUserPointLog appUserPointLog = new AppUserPointLog();
+        appUserPointLog.setAppUserId(appUserId);
+        appUserPointLog.setPoint(point);
+        appUserPointLog.setType("2");
+        appUserPointLog.setRelationId(relationId);
+        appUserPointLog.setSourceType(from.getCode());
+        appUserPointLog.setRemark(remark);
+        appUserPointLog.buildCreateData();
+        this.insertAppUserPointLog(appUserPointLog);
+        // 更新用户积分
+        appUserMapper.updateUserPoint(appUserId, - point);
+    }
+
+
+    //</editor-folder>
+
+}

+ 0 - 10
yiqi-core/src/main/java/com/yiqi/core/service/impl/ClothItemServiceImpl.java

@@ -78,16 +78,6 @@ public class ClothItemServiceImpl extends ServiceImpl<ClothItemMapper, ClothItem
         if (CollUtil.isEmpty(clothItemWithPriceQueryVOS)) {
             return clothItemWithPriceQueryVOS;
         }
-        // 获取衣服最小的指定价格
-//        List<ActivityClothItemMinPriceVO> minPriceByActivity = activityClothItemService.getMinPriceWith1WashByActivity();
-//        if (CollUtil.isNotEmpty(minPriceByActivity)){
-//            Map<Long, BigDecimal> minPriceByActivityMap = minPriceByActivity.stream().collect(Collectors.toMap(ActivityClothItemMinPriceVO::getClothItemId, ActivityClothItemMinPriceVO::getMinPrice));
-//            for (ClothItemWithPriceQueryVO clothItemWithPriceQueryVO : clothItemWithPriceQueryVOS) {
-//                if (minPriceByActivityMap.containsKey(clothItemWithPriceQueryVO.getId())){
-//                    clothItemWithPriceQueryVO.setDefaultPrice(minPriceByActivityMap.get(clothItemWithPriceQueryVO.getId()));
-//                }
-//            }
-//        }
         return clothItemWithPriceQueryVOS;
     }
 

+ 29 - 29
yiqi-core/src/main/java/com/yiqi/core/service/impl/GoodsSkuServiceImpl.java

@@ -69,14 +69,14 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper, GoodsSku> i
         List<GoodsSkuQueryVO> SkuQueryVOS = null;
 
         // 总部
-        if ("00".equals(user.getUserType())){
+        if ("00".equals(user.getUserType())) {
             GoodsSkuDTO goodsSkuDTO = new GoodsSkuDTO();
             goodsSkuDTO.setSourceType(user.getUserType());
             goodsSkuDTO.setGoodsSkuId(id);
             SkuQueryVOS = baseMapper.selectGoodsSkuInfoByHq(goodsSkuDTO);
         }
         // 工厂
-        if ("01".equals(user.getUserType())){
+        if ("01".equals(user.getUserType())) {
             GoodsSkuDTO goodsSkuDTO = new GoodsSkuDTO();
             goodsSkuDTO.setSourceType(user.getUserType());
             goodsSkuDTO.setTargetId(user.getFactoryId());
@@ -84,7 +84,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper, GoodsSku> i
             SkuQueryVOS = baseMapper.selectGoodsSkuInfoByFactory(goodsSkuDTO);
         }
         // 门店
-        if ("02".equals(user.getUserType())){
+        if ("02".equals(user.getUserType())) {
             GoodsSkuDTO goodsSkuDTO = new GoodsSkuDTO();
             goodsSkuDTO.setSourceType(user.getUserType());
             goodsSkuDTO.setTargetId(user.getStoreId());
@@ -98,8 +98,8 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper, GoodsSku> i
                         .eq(GoodsSkuSpec::getGoodsSkuId, id)
                         .eq(GoodsSkuSpec::getDelFlag, DeleteStatus.OK.getCode()));
 
-        if (CollUtil.isEmpty(SkuQueryVOS)){
-            return  new GoodsSkuQueryVO();
+        if (CollUtil.isEmpty(SkuQueryVOS)) {
+            return new GoodsSkuQueryVO();
         }
         GoodsSkuQueryVO goodsSkuQueryVO = SkuQueryVOS.get(0);
         goodsSkuQueryVO.setSpecVoList(skuStoreList);
@@ -117,14 +117,14 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper, GoodsSku> i
         List<GoodsSkuQueryVO> SkuQueryVOS = null;
         SysUser user = SecurityUtils.getLoginUser().getUser();
         // 总部
-        if (SourceType.MANAGER.getCode().equals(user.getUserType())){
+        if (SourceType.MANAGER.getCode().equals(user.getUserType())) {
             GoodsSkuDTO goodsSkuDTO = new GoodsSkuDTO();
             goodsSkuDTO.setSourceType(user.getUserType());
             goodsSkuDTO.setGoodsId(goodsSku.getGoodsId());
             SkuQueryVOS = baseMapper.selectGoodsSkuInfoByHq(goodsSkuDTO);
         }
         // 工厂
-        if (SourceType.FACTORY.getCode().equals(user.getUserType())){
+        if (SourceType.FACTORY.getCode().equals(user.getUserType())) {
             GoodsSkuDTO goodsSkuDTO = new GoodsSkuDTO();
             goodsSkuDTO.setSourceType(user.getUserType());
             goodsSkuDTO.setTargetId(user.getFactoryId());
@@ -132,7 +132,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper, GoodsSku> i
             SkuQueryVOS = baseMapper.selectGoodsSkuInfoByFactory(goodsSkuDTO);
         }
         // 门店
-        if (SourceType.STORE.getCode().equals(user.getUserType())){
+        if (SourceType.STORE.getCode().equals(user.getUserType())) {
             GoodsSkuDTO goodsSkuDTO = new GoodsSkuDTO();
             goodsSkuDTO.setSourceType(user.getUserType());
             goodsSkuDTO.setTargetId(user.getStoreId());
@@ -140,17 +140,17 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper, GoodsSku> i
             goodsSkuDTO.setGoodsId(goodsSku.getGoodsId());
             SkuQueryVOS = baseMapper.selectGoodsSkuInfoByStore(goodsSkuDTO);
         }
-        if (CollUtil.isEmpty(SkuQueryVOS)){
-            return  SkuQueryVOS;
+        if (CollUtil.isEmpty(SkuQueryVOS)) {
+            return SkuQueryVOS;
         }
         Set<Long> collect = SkuQueryVOS.stream().map(GoodsSkuQueryVO::getId).collect(Collectors.toSet());
         List<GoodsSkuSpec> skuStoreList = goodsSkuSpecMapper.selectList(
                 new QueryWrapper<GoodsSkuSpec>().lambda()
                         .in(GoodsSkuSpec::getGoodsSkuId, collect)
                         .eq(GoodsSkuSpec::getDelFlag, DeleteStatus.OK.getCode()));
-        if (CollUtil.isNotEmpty(skuStoreList)){
+        if (CollUtil.isNotEmpty(skuStoreList)) {
             Map<Long, List<GoodsSkuSpec>> map = skuStoreList.stream().collect(Collectors.groupingBy(GoodsSkuSpec::getGoodsSkuId));
-            SkuQueryVOS.forEach(sku ->{
+            SkuQueryVOS.forEach(sku -> {
                 sku.setSpecVoList(map.get(sku.getId()));
             });
         }
@@ -182,7 +182,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper, GoodsSku> i
         // 新增总部物料关系
         GoodsSkuStore hq = new GoodsSkuStore();
         hq.setGoodsSkuId(goodsSku.getId());
-        hq.setSourceType("00");
+        hq.setSourceType(SourceType.MANAGER.getCode());
         hq.setCreateBy(goodsSkuAddVO.getCreateBy());
         hq.setCreateById(goodsSkuAddVO.getCreateById());
         hq.setCreateTime(DateUtils.getNowDate());
@@ -218,7 +218,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper, GoodsSku> i
     public GoodsSku insertSku(GoodsSkuAddVO goodsSkuAddVO) {
         GoodsSku goodsSku = new GoodsSku();
         goodsSku.setGoodsId(goodsSkuAddVO.getGoodsId());
-//        goodsSku.setSourceType(goodsSkuAddVO.getLoginUser().getUser().getUserType());
+        goodsSku.setSourceType(SourceType.MANAGER.getCode());
         goodsSku.setCreateBy(goodsSkuAddVO.getCreateBy());
         goodsSku.setCreateById(goodsSkuAddVO.getCreateById());
         goodsSku.setCreateTime(DateUtils.getNowDate());
@@ -321,12 +321,12 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper, GoodsSku> i
                 .eq(GoodsInfo::getDelFlag, DeleteStatus.OK.getCode())
                 .eq(GoodsInfo::getStatus, StatusType.OK.getCode())).stream().map(GoodsInfo::getId).collect(Collectors.toList());
         List<GoodsSkuQueryVO> SkuQueryVOS = null;
-        if (CollUtil.isEmpty(goodsIdList)){
+        if (CollUtil.isEmpty(goodsIdList)) {
             return new ArrayList<>();
         }
 
         // 总部
-        if (SourceType.MANAGER.getCode().equals(user.getUserType())){
+        if (SourceType.MANAGER.getCode().equals(user.getUserType())) {
             GoodsSkuDTO goodsSkuDTO = new GoodsSkuDTO();
             goodsSkuDTO.setSourceType(user.getUserType());
             goodsSkuDTO.setGoodsIdList(goodsIdList);
@@ -334,30 +334,30 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper, GoodsSku> i
         }
 
         // 工厂
-        if (SourceType.FACTORY.getCode().equals(user.getUserType())){
+        if (SourceType.FACTORY.getCode().equals(user.getUserType())) {
             GoodsSkuDTO goodsSkuDTO = new GoodsSkuDTO();
             goodsSkuDTO.setGoodsIdList(goodsIdList);
             SkuQueryVOS = baseMapper.selectPurchaseGoodsSkuInfoByFactory(goodsSkuDTO);
         }
         // 门店
-        if (SourceType.STORE.getCode().equals(user.getUserType())){
+        if (SourceType.STORE.getCode().equals(user.getUserType())) {
             GoodsSkuDTO goodsSkuDTO = new GoodsSkuDTO();
             goodsSkuDTO.setSourceType(user.getUserType());
             goodsSkuDTO.setTargetId(user.getStoreId());
             goodsSkuDTO.setGoodsIdList(goodsIdList);
             SkuQueryVOS = baseMapper.selectPurchaseGoodsSkuInfoByStore(goodsSkuDTO);
         }
-        if (CollUtil.isEmpty(SkuQueryVOS)){
-            return  SkuQueryVOS;
+        if (CollUtil.isEmpty(SkuQueryVOS)) {
+            return SkuQueryVOS;
         }
         Set<Long> collect = SkuQueryVOS.stream().map(GoodsSkuQueryVO::getId).collect(Collectors.toSet());
         List<GoodsSkuSpec> skuStoreList = goodsSkuSpecMapper.selectList(
                 new QueryWrapper<GoodsSkuSpec>().lambda()
                         .in(GoodsSkuSpec::getGoodsSkuId, collect)
                         .eq(GoodsSkuSpec::getDelFlag, DeleteStatus.OK.getCode()));
-        if (CollUtil.isNotEmpty(skuStoreList)){
+        if (CollUtil.isNotEmpty(skuStoreList)) {
             Map<Long, List<GoodsSkuSpec>> map = skuStoreList.stream().collect(Collectors.groupingBy(GoodsSkuSpec::getGoodsSkuId));
-            SkuQueryVOS.forEach(sku ->{
+            SkuQueryVOS.forEach(sku -> {
                 sku.setSpecVoList(map.get(sku.getId()));
             });
         }
@@ -367,7 +367,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper, GoodsSku> i
     @Override
     public List<GoodsInfo> getGoodsListToGoodsRetail(RetailQueryGoodsDTO retailQueryGoodsDTO) {
         List<GoodsInfo> goodsInfoList = goodsInfoService.selectGoodsByCategoryId(retailQueryGoodsDTO);
-        if (CollUtil.isEmpty(goodsInfoList)){
+        if (CollUtil.isEmpty(goodsInfoList)) {
             return new ArrayList<>();
         }
         return goodsInfoList;
@@ -378,7 +378,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper, GoodsSku> i
         SysUser user = SecurityUtils.getLoginUser().getUser();
         List<GoodsSkuQueryVO> SkuQueryVOS = null;
         // 总部
-        if (SourceType.MANAGER.getCode().equals(user.getUserType())){
+        if (SourceType.MANAGER.getCode().equals(user.getUserType())) {
             GoodsSkuDTO goodsSkuDTO = new GoodsSkuDTO();
             goodsSkuDTO.setSourceType(user.getUserType());
             goodsSkuDTO.setGoodsId(goodsId);
@@ -386,24 +386,24 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper, GoodsSku> i
         }
 
         // 工厂
-        if (SourceType.FACTORY.getCode().equals(user.getUserType())){
+        if (SourceType.FACTORY.getCode().equals(user.getUserType())) {
             GoodsSkuDTO goodsSkuDTO = new GoodsSkuDTO();
             goodsSkuDTO.setGoodsId(goodsId);
             SkuQueryVOS = baseMapper.selectRetailGoodsSkuInfoByFactory(goodsSkuDTO);
         }
         // 门店
-        if (SourceType.STORE.getCode().equals(user.getUserType())){
+        if (SourceType.STORE.getCode().equals(user.getUserType())) {
             GoodsSkuDTO goodsSkuDTO = new GoodsSkuDTO();
             goodsSkuDTO.setSourceType(user.getUserType());
             goodsSkuDTO.setTargetId(user.getStoreId());
             goodsSkuDTO.setGoodsId(goodsId);
             SkuQueryVOS = baseMapper.selectRetailGoodsSkuInfoByStore(goodsSkuDTO);
         }
-        if (CollUtil.isEmpty(SkuQueryVOS)){
-            return  SkuQueryVOS;
+        if (CollUtil.isEmpty(SkuQueryVOS)) {
+            return SkuQueryVOS;
         }
 
-        SkuQueryVOS.forEach(sku ->{
+        SkuQueryVOS.forEach(sku -> {
             List<GoodsSkuSpec> skuStoreList = goodsSkuSpecMapper.selectList(
                     new QueryWrapper<GoodsSkuSpec>().lambda()
                             .eq(GoodsSkuSpec::getGoodsSkuId, sku.getId())

+ 1 - 1
yiqi-core/src/main/java/com/yiqi/order/service/impl/OrderGoodsServiceImpl.java

@@ -273,7 +273,7 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
      * @return
      */
     private OrderPayResultVO handlePay(OrderGoods orderGoods, OrderGoodsDTO orderGoodsDTO) {
-        OrderPayResultVO orderPayResultVO = null;
+        OrderPayResultVO orderPayResultVO = new OrderPayResultVO();
         if (orderGoods == null) {
             throw new ServiceException("未查询到订单");
         }

+ 9 - 1
yiqi-core/src/main/java/com/yiqi/order/service/impl/OrderRechargeServiceImpl.java

@@ -7,8 +7,10 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.yiqi.activity.domain.ActivityRechargeItem;
 import com.yiqi.app.domain.AppUser;
+import com.yiqi.app.service.IAppUserPointLogService;
 import com.yiqi.app.service.IAppUserService;
 import com.yiqi.app.service.impl.AppUserBillMstrServiceImpl;
+import com.yiqi.app.service.impl.AppUserPointLogServiceImpl;
 import com.yiqi.common.exception.ServiceException;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yiqi.activity.service.IActivityRechargeItemService;
@@ -100,6 +102,8 @@ public class OrderRechargeServiceImpl extends ServiceImpl<OrderRechargeMapper, O
     private IOrderRechargeRefundService orderRechargeRefundService;
     @Autowired
     private IAppUserBillMstrService billMstrOrderService;
+    @Autowired
+    private IAppUserPointLogService appUserPointLogService;
 
     /**
      * 查询充值订单
@@ -531,6 +535,9 @@ public class OrderRechargeServiceImpl extends ServiceImpl<OrderRechargeMapper, O
         // 同步生成密码卡
         RechargePasswordCard rechargePasswordCard = this.buildRechargePasswordCardData(orderRecharge);
 
+        //添加用户积分
+        appUserPointLogService.addPoint(orderRecharge.getAppUserId(), orderRecharge.getGivePointAmount().intValue(), orderRecharge.getOrderNo(), MemberPointSourceEnum.RECHARGEADD, "会员储值赠送");
+
         //保存日志
         BillMstrOrderDTO billMstrOrderDTO = new BillMstrOrderDTO();
         billMstrOrderDTO.setAppUserId(orderRecharge.getAppUserId());
@@ -979,8 +986,9 @@ public class OrderRechargeServiceImpl extends ServiceImpl<OrderRechargeMapper, O
             throw new GlobalException("充值卡不存在");
         }
         rechargePasswordCard.setRechargeStatus(RechargeStatusType.REFUND.getCode());
-//        rechargePasswordCard.setDelFlag(StatusType.DELETED.getCode());
         rechargePasswordCardService.updateById(rechargePasswordCard);
+        //退用户积分
+        appUserPointLogService.reducePoint(orderRecharge.getAppUserId(), orderRecharge.getGivePointAmount().intValue(), orderRecharge.getOrderNo(), MemberPointSourceEnum.REFUND_DEDUCT, "会员储值退款扣除");
         //此处添加退款记录
         appUserBillMstrService.save(appUserBillMstrService.buildBillMstr(ConsumeOrderDTO.buildOrderRechargeRefundData(orderRecharge)));
         log.debug("充值订单{}" + orderNo + "退款完成");

+ 59 - 287
yiqi-core/src/main/java/com/yiqi/order/service/impl/PayServiceImpl.java

@@ -170,6 +170,8 @@ public class PayServiceImpl implements IPayService {
 
     @Override
     public AppPayRespVO appPay(PayOrderAppDTO payOrderAppDTO) {
+        OrderPayInfo orderPayInfo = orderPayInfoService.createOrderPayInfo(payOrderAppDTO.getOrderNo(), payOrderAppDTO.getPayAmount(), payOrderAppDTO.getPayType());
+        payOrderAppDTO.setOrderNo(orderPayInfo.getPayOrderNo());
         switch (EnumUtils.getEnumByType(payOrderAppDTO.getPayType(), PayType.class)) {
             case WECHAT: {
                 if ("APP".equals(payOrderAppDTO.getPlatform())) {
@@ -188,6 +190,63 @@ public class PayServiceImpl implements IPayService {
         }
     }
 
+    @Override
+    public PayResponseDTO faceToFacePay(PayOrderFaceToFaceDTO payOrderFaceToFaceDTO) {
+        if (payOrderFaceToFaceDTO.getExpireTime() == null) {
+            throw new ServiceException("支付缺少过期时间");
+        }
+        PayResponseDTO payResponseDTO = null;
+        switch (EnumUtils.getEnumByType(payOrderFaceToFaceDTO.getPayType(), PayType.class)) {
+            case WECHAT: {
+                payResponseDTO = wechatPayService.facePay(payOrderFaceToFaceDTO);
+                break;
+            }
+            case ALIPAY: {
+                payResponseDTO = aliPayService.facePay(payOrderFaceToFaceDTO);
+                break;
+            }
+            default:
+                payResponseDTO = PayResponseDTO.payError("支付方式不能为空");
+        }
+        return payResponseDTO;
+    }
+
+    @Override
+    public PayResponseDTO orderPayQuery(OrderPayInfo orderPayInfo) {
+        PayResponseDTO payResponseDTO = null;
+        switch (EnumUtils.getEnumByType(orderPayInfo.getPayType(), PayType.class)) {
+            case WECHAT: {
+                payResponseDTO = wechatPayService.orderPayQuery(orderPayInfo.getPayOrderNo());
+                break;
+            }
+            case ALIPAY: {
+                payResponseDTO = aliPayService.orderPayQuery(orderPayInfo.getPayOrderNo());
+                break;
+            }
+            default:
+                payResponseDTO = PayResponseDTO.payWait(orderPayInfo.getPayOrderNo());
+        }
+        return payResponseDTO;
+    }
+
+    @Override
+    public RefundResponseDTO orderRefundQuery(PayRefundDTO payRefundDTO) {
+        RefundResponseDTO refundResponseDTO = null;
+        switch (EnumUtils.getEnumByType(payRefundDTO.getPayType(), PayType.class)) {
+            case WECHAT: {
+                refundResponseDTO = wechatPayService.orderRefundQuery(payRefundDTO.getOutRequestNo());
+                break;
+            }
+            case ALIPAY: {
+                refundResponseDTO = RefundResponseDTO.refundSuccess(payRefundDTO.getOutRequestNo(), payRefundDTO.getOutRequestNo());
+                break;
+            }
+            default:
+                refundResponseDTO = RefundResponseDTO.refundError("支付方式不能为空");
+        }
+        return refundResponseDTO;
+    }
+
     /**
      * 退款
      *
@@ -362,211 +421,6 @@ public class PayServiceImpl implements IPayService {
         return response;
     }
 
-    //</editor-folder>
-
-    //<editor-folder desc="付款码支付">
-    @Override
-    public PayResponseDTO faceToFacePay(PayOrderFaceToFaceDTO payOrderFaceToFaceDTO) {
-        if (payOrderFaceToFaceDTO.getExpireTime() == null) {
-            throw new ServiceException("支付缺少过期时间");
-        }
-        PayResponseDTO payResponseDTO = null;
-        switch (EnumUtils.getEnumByType(payOrderFaceToFaceDTO.getPayType(), PayType.class)) {
-            case WECHAT: {
-                payResponseDTO = wechatPayService.facePay(payOrderFaceToFaceDTO);
-                break;
-            }
-            case ALIPAY: {
-                payResponseDTO = aliPayService.facePay(payOrderFaceToFaceDTO);
-                break;
-            }
-            default:
-                payResponseDTO = PayResponseDTO.payError("支付方式不能为空");
-        }
-        return payResponseDTO;
-    }
-
-    @Override
-    public PayResponseDTO orderPayQuery(OrderPayInfo orderPayInfo) {
-        PayResponseDTO payResponseDTO = null;
-        switch (EnumUtils.getEnumByType(orderPayInfo.getPayType(), PayType.class)) {
-            case WECHAT: {
-                payResponseDTO = wechatPayService.orderPayQuery(orderPayInfo.getPayOrderNo());
-                break;
-            }
-            case ALIPAY: {
-                payResponseDTO = aliPayService.orderPayQuery(orderPayInfo.getPayOrderNo());
-                break;
-            }
-            default:
-                payResponseDTO = PayResponseDTO.payWait(orderPayInfo.getPayOrderNo());
-        }
-        return payResponseDTO;
-    }
-
-    @Override
-    public RefundResponseDTO orderRefundQuery(PayRefundDTO payRefundDTO) {
-        RefundResponseDTO refundResponseDTO = null;
-        switch (EnumUtils.getEnumByType(payRefundDTO.getPayType(), PayType.class)) {
-            case WECHAT: {
-                refundResponseDTO = wechatPayService.orderRefundQuery(payRefundDTO.getOutRequestNo());
-                break;
-            }
-            case ALIPAY: {
-                refundResponseDTO = RefundResponseDTO.refundSuccess(payRefundDTO.getOutRequestNo(), payRefundDTO.getOutRequestNo());
-                break;
-            }
-            default:
-                refundResponseDTO = RefundResponseDTO.refundError("支付方式不能为空");
-        }
-        return refundResponseDTO;
-    }
-
-
-    private void alipayFaceToFacePay(PayOrderFaceToFaceDTO payOrderFaceToFaceDTO) {
-//        Configs.init();
-
-        DefaultAlipayClient alipayClient = null;
-        try {
-            alipayClient = new DefaultAlipayClient(getAlipayConfig());
-        } catch (AlipayApiException e) {
-            e.printStackTrace();
-        }
-        AlipayTradePayRequest request = new AlipayTradePayRequest();
-        //异步接收地址,仅支持http/https,公网可访问
-        request.setNotifyUrl(AlipayConfigs.getPayNotifySuccessDomain());
-
-        /******必传参数******/
-        JSONObject bizContent = new JSONObject();
-        //商户订单号,商家自定义,保持唯一性
-        bizContent.put("out_trade_no", payOrderFaceToFaceDTO.getOrderNo());
-        //支付金额,最小值0.01元
-        bizContent.put("total_amount", payOrderFaceToFaceDTO.getPayAmount().setScale(2, RoundingMode.HALF_UP).doubleValue());
-        //订单标题,不可使用特殊符号
-        bizContent.put("subject", payOrderFaceToFaceDTO.getSubjectTitle());
-        //1.条码场景:bar_code;2.刷脸场景:security_code
-        bizContent.put("scene", "bar_code");
-        //根据auth_code_type上传付款码,auth_code_type=bar_code,则填写用户支付宝钱包中的付款码;auth_code_type=security_code,则填写设备刷脸返回的付款码;
-        bizContent.put("auth_code", payOrderFaceToFaceDTO.getAuthCode());
-
-        /******可选参数******/
-        //当面付场景下,当面付快捷版则传 OFFLINE_PAYMENT;其它支付宝当面付产品传 FACE_TO_FACE_PAYMENT;不传则默认使用FACE_TO_FACE_PAYMENT。
-        //bizContent.put("product_code", "FACE_TO_FACE_PAYMENT");
-        //// 商品明细信息
-        //JSONArray goodsDetail = new JSONArray();
-        //JSONObject goods1 = new JSONObject();
-        //goods1.put("goods_id", "goodsNo1");
-        //goods1.put("goods_name", "子商品1");
-        //goods1.put("quantity", 1);
-        //goods1.put("price", 0.01);
-        //goodsDetail.add(goods1);
-        //bizContent.put("goods_detail", goodsDetail);
-
-        //// 扩展信息
-        //JSONObject extendParams = new JSONObject();
-        //extendParams.put("sys_service_provider_id", "2088511833207846");
-        //bizContent.put("extend_params", extendParams);
-
-        //// 返回参数选项
-        //JSONArray queryOptions = new JSONArray();
-        //queryOptions.add("fund_bill_list");
-        //queryOptions.add("voucher_detail_list");
-        //bizContent.put("query_options", queryOptions);
-
-        request.setBizContent(bizContent.toString());
-        AlipayTradePayResponse response = null;
-        try {
-            response = alipayClient.certificateExecute(request);
-        } catch (AlipayApiException e) {
-            e.printStackTrace();
-        }
-        if (!response.isSuccess()) {
-            throw new ServiceException("支付请求失败,errorCode:" + response.getCode() + ";errorMsg:"
-                    + response.getMsg() + ";subCode:" + response.getSubCode() + ";subMsg:" + response.getSubMsg());
-        }
-
-        log.info("调用成功");
-
-        //定时校验订单状态,如果订单已经付款完成,则终止校验,如果超过5分钟,则修改订单状态为已取消
-    }
-
-    /**
-     * 支付宝付款码支付
-     *
-     * @param payOrderFaceToFaceDTO
-     * @throws Exception
-     */
-    private void wxPayFaceToFace(PayOrderFaceToFaceDTO payOrderFaceToFaceDTO) {
-        WxPayV2Config config = null;
-        try {
-            config = new WxPayV2Config();
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        WXPay wxpay = new WXPay(config);
-        Map<String, String> map = new HashMap<>(16);
-        map.put("attach", "");
-        map.put("auth_code", payOrderFaceToFaceDTO.getAuthCode());
-        map.put("body", payOrderFaceToFaceDTO.getSubjectTitle());
-        map.put("nonce_str", WXPayUtil.generateNonceStr());
-        map.put("out_trade_no", payOrderFaceToFaceDTO.getOrderNo());
-        map.put("spbill_create_ip", ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest().getRemoteAddr());
-        map.put("total_fee", payOrderFaceToFaceDTO.getPayAmount().multiply(new BigDecimal(100)).intValue() + "");
-        //生成签名
-        String sign = null;
-        try {
-            sign = WXPayUtil.generateSignature(map, config.getKey());
-        } catch (Exception e) {
-            e.printStackTrace();
-            throw new ServiceException("微信签名生成失败");
-        }
-        map.put("sign", sign);
-        String mapToXml = null;
-        try {
-            //调用微信的扫码支付接口
-            Map<String, String> resp = wxpay.microPay(map);
-            mapToXml = WXPayUtil.mapToXml(resp);
-        } catch (Exception e) {
-            e.printStackTrace();
-            log.error("微信支付失败" + e);
-        }
-        //判断支付是否成功
-        String return_code = null;
-        String return_msg = null;
-        String result_code = null;
-        String err_code_des = null;
-        String err_code = null;
-        //获取Document对象(主要是获取支付接口的返回信息)
-        Document doc = null;
-        try {
-            doc = DocumentHelper.parseText(mapToXml);
-        } catch (DocumentException e) {
-            e.printStackTrace();
-        }
-        //获取对象的根节点<xml>
-        Element rootElement = doc.getRootElement();
-        //获取对象的子节点
-        List<Element> elements = rootElement.elements();
-        for (Element element : elements) {
-            if (element.getName().equals("return_code")) {
-                return_code = element.getTextTrim();
-            } else if (element.getName().equals("return_msg")) {
-                return_msg = element.getTextTrim();
-            } else if (element.getName().equals("result_code")) {
-                result_code = element.getTextTrim();
-            } else if (element.getName().equals("err_code_des")) {
-                err_code_des = element.getTextTrim();
-            } else if (element.getName().equals("err_code")) {
-                err_code = element.getTextTrim();
-            }
-        }
-        if (!WxPayV2Config.PAY_SUCCESS.equals(return_code)) {
-            throw new ServiceException("付款码支付失败,return_msg: " + return_msg);
-        }
-    }
-
-    //</editor-folder>
-
     private AlipayConfig getAlipayConfig() {
         AlipayConfig alipayConfig = new AlipayConfig();
         //设置网关地址
@@ -591,87 +445,5 @@ public class PayServiceImpl implements IPayService {
         return alipayConfig;
     }
 
-    //<editor-folder desc="app支付相关接口">
-    private AppPayRespVO wxXcxPay(PayOrderAppDTO payOrderAppDTO) {
-        // 构建service
-        JsapiService service = new JsapiService.Builder().config(WxPayConfigs.getConfig()).build();
-        // request.setXxx(val)设置所需参数,具体参数可见Request定义
-        PrepayRequest request = new PrepayRequest();
-        com.wechat.pay.java.service.payments.jsapi.model.Amount amount = new com.wechat.pay.java.service.payments.jsapi.model.Amount();
-        amount.setTotal(payOrderAppDTO.getPayAmount().multiply(new BigDecimal(100)).intValue());
-        request.setAmount(amount);
-        request.setAppid(wxMaProperties.getAppid());
-        request.setMchid(WxPayConfigs.getMch_ID());
-        request.setDescription(payOrderAppDTO.getSubjectTitle());
-        request.setNotifyUrl(WxPayConfigs.getPayNotifyUrl());
-        request.setOutTradeNo(payOrderAppDTO.getOrderNo());
-        Payer payer = new Payer();
-        payer.setOpenid(AuthHolder.openId());
-        request.setPayer(payer);
-        // 调用下单方法,得到应答
-        com.wechat.pay.java.service.payments.jsapi.model.PrepayResponse response = service.prepay(request);
-
-        return new AppPayRespVO(response.getPrepayId());
-    }
-
-    private AppPayRespVO wxAppPay(PayOrderAppDTO payOrderAppDTO) {
-        // 构建service
-        AppServiceExtension service = new AppServiceExtension.Builder().config(WxPayConfigs.getConfig()).build();
-        // request.setXxx(val)设置所需参数,具体参数可见Request定义
-        com.wechat.pay.java.service.payments.app.model.PrepayRequest request = new com.wechat.pay.java.service.payments.app.model.PrepayRequest();
-        com.wechat.pay.java.service.payments.app.model.Amount amount = new com.wechat.pay.java.service.payments.app.model.Amount();
-        amount.setTotal(payOrderAppDTO.getPayAmount().multiply(new BigDecimal(100)).intValue());
-        request.setAmount(amount);
-        request.setAppid(WxPayConfigs.getAppId());
-        request.setMchid(WxPayConfigs.getMch_ID());
-        request.setDescription(payOrderAppDTO.getSubjectTitle());
-        request.setNotifyUrl(WxPayConfigs.getPayNotifyUrl());
-        request.setOutTradeNo(payOrderAppDTO.getOrderNo());
-        // 调用下单方法,得到应答
-        PrepayWithRequestPaymentResponse response = service.prepayWithRequestPayment(request);
-        return new AppPayRespVO(response);
-    }
-
-    private AppPayRespVO alipayAppPay(PayOrderAppDTO payOrderAppDTO) {
-        if (payOrderAppDTO.getExpireTime() == null) {
-            throw new ServiceException("支付缺少过期时间");
-        }
-        AlipayClient alipayClient = null;
-        try {
-            alipayClient = new DefaultAlipayClient(getAlipayConfig());
-        } catch (AlipayApiException e) {
-            e.printStackTrace();
-        }
-        AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
-        request.setNotifyUrl(AlipayConfigs.getPayNotifySuccessDomain());
-        JSONObject bizContent = new JSONObject();
-        bizContent.put("out_trade_no", payOrderAppDTO.getOrderNo());
-        bizContent.put("total_amount", payOrderAppDTO.getPayAmount().setScale(2, RoundingMode.HALF_UP).doubleValue());
-        bizContent.put("subject", payOrderAppDTO.getSubjectTitle());
-        bizContent.put("product_code", "QUICK_MSECURITY_PAY");
-        if (payOrderAppDTO.getExpireTime() != null) {
-            bizContent.put("time_expire", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, payOrderAppDTO.getExpireTime()));
-        }
-        request.setBizContent(bizContent.toString());
-        AlipayTradeAppPayResponse response = null;
-        try {
-            response = alipayClient.sdkExecute(request);
-        } catch (AlipayApiException e) {
-            e.printStackTrace();
-        }
-
-        if (!response.isSuccess()) {
-            throw new ServiceException("支付请求失败,errorCode:" + response.getCode() + ";errorMsg:"
-                    + response.getMsg() + ";subCode:" + response.getSubCode() + ";subMsg:" + response.getSubMsg());
-        }
-
-        log.info("调用成功");
-        String orderStr = response.getBody();
-
-        //定时校验订单状态,如果订单已经付款完成,则终止校验,如果超过5分钟,则修改订单状态为已取消
-        return new AppPayRespVO(orderStr);
-    }
-    //</editor-folder>
-
 
 }

+ 4 - 0
yiqi-core/src/main/resources/mapper/app/AppUserMapper.xml

@@ -169,6 +169,10 @@
         where id = #{id}
     </update>
 
+    <update id="updateUserPoint">
+        update app_user set point = point + #{point} where id = #{appUserId}
+    </update>
+
     <delete id="deleteAppUserById" parameterType="Long">
             delete from app_user where id = #{id}
         </delete>

+ 177 - 0
yiqi-core/src/main/resources/mapper/app/AppUserPointLogMapper.xml

@@ -0,0 +1,177 @@
+<?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.yiqi.app.mapper.AppUserPointLogMapper">
+
+    <resultMap type="AppUserPointLog" id="AppUserPointLogResult">
+        <result property="id" column="id"/>
+        <result property="appUserId" column="app_user_id"/>
+        <result property="point" column="point"/>
+        <result property="type" column="type"/>
+        <result property="relationId" column="relation_id"/>
+        <result property="sourceType" column="source_type"/>
+        <result property="createById" column="create_by_id"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateById" column="update_by_id"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="remark" column="remark"/>
+    </resultMap>
+
+    <sql id="selectAppUserPointLogVo">
+        select * from app_user_point_log
+    </sql>
+
+    <select id="selectAppUserPointLogList" parameterType="AppUserPointLog" resultMap="AppUserPointLogResult">
+        <include refid="selectAppUserPointLogVo"/>
+        <where>
+            <if test="appUserId != null ">
+                and app_user_id = #{appUserId}
+            </if>
+            <if test="point != null ">
+                and point = #{point}
+            </if>
+            <if test="type != null  and type != ''">
+                and type = #{type}
+            </if>
+            <if test="relationOrderSn != null  and relationOrderSn != ''">
+                and relation_order_sn = #{relationOrderSn}
+            </if>
+            <if test="sourceType != null  and sourceType != ''">
+                and source_type = #{sourceType}
+            </if>
+            <if test="desc != null  and desc != ''">
+                and desc = #{desc}
+            </if>
+        </where>
+    </select>
+
+    <select id="selectAppUserPointLogById" parameterType="Integer"
+            resultMap="AppUserPointLogResult">
+        <include refid="selectAppUserPointLogVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertAppUserPointLog" parameterType="AppUserPointLog" useGeneratedKeys="true"
+            keyProperty="id">
+        insert into app_user_point_log
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="appUserId != null">app_user_id,
+            </if>
+            <if test="point != null">point,
+            </if>
+            <if test="type != null and type != ''">type,
+            </if>
+            <if test="relationOrderSn != null">relation_order_sn,
+            </if>
+            <if test="sourceType != null and sourceType != ''">source_type,
+            </if>
+            <if test="desc != null">desc,
+            </if>
+            <if test="createById != null">create_by_id,
+            </if>
+            <if test="createBy != null">create_by,
+            </if>
+            <if test="createTime != null">create_time,
+            </if>
+            <if test="updateById != null">update_by_id,
+            </if>
+            <if test="updateBy != null">update_by,
+            </if>
+            <if test="updateTime != null">update_time,
+            </if>
+            <if test="remark != null">remark,
+            </if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="appUserId != null">#{appUserId},
+            </if>
+            <if test="point != null">#{point},
+            </if>
+            <if test="type != null and type != ''">#{type},
+            </if>
+            <if test="relationOrderSn != null">#{relationOrderSn},
+            </if>
+            <if test="sourceType != null and sourceType != ''">#{sourceType},
+            </if>
+            <if test="desc != null">#{desc},
+            </if>
+            <if test="createById != null">#{createById},
+            </if>
+            <if test="createBy != null">#{createBy},
+            </if>
+            <if test="createTime != null">#{createTime},
+            </if>
+            <if test="updateById != null">#{updateById},
+            </if>
+            <if test="updateBy != null">#{updateBy},
+            </if>
+            <if test="updateTime != null">#{updateTime},
+            </if>
+            <if test="remark != null">#{remark},
+            </if>
+        </trim>
+    </insert>
+
+    <update id="updateAppUserPointLog" parameterType="AppUserPointLog">
+        update app_user_point_log
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="appUserId != null">app_user_id =
+                #{appUserId},
+            </if>
+            <if test="point != null">point =
+                #{point},
+            </if>
+            <if test="type != null and type != ''">type =
+                #{type},
+            </if>
+            <if test="relationOrderSn != null">relation_order_sn =
+                #{relationOrderSn},
+            </if>
+            <if test="sourceType != null and sourceType != ''">source_type =
+                #{sourceType},
+            </if>
+            <if test="desc != null">desc =
+                #{desc},
+            </if>
+            <if test="createById != null">create_by_id =
+                #{createById},
+            </if>
+            <if test="createBy != null">create_by =
+                #{createBy},
+            </if>
+            <if test="createTime != null">create_time =
+                #{createTime},
+            </if>
+            <if test="updateById != null">update_by_id =
+                #{updateById},
+            </if>
+            <if test="updateBy != null">update_by =
+                #{updateBy},
+            </if>
+            <if test="updateTime != null">update_time =
+                #{updateTime},
+            </if>
+            <if test="remark != null">remark =
+                #{remark},
+            </if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteAppUserPointLogById" parameterType="Integer">
+        delete from app_user_point_log where id = #{id}
+    </delete>
+
+    <delete id="deleteAppUserPointLogByIds" parameterType="String">
+        delete from app_user_point_log where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+
+
+
+</mapper>