diff --git a/mallinkPublicApi/src/main/java/com/iformall/controller/UserBasicInfoController.java b/mallinkPublicApi/src/main/java/com/iformall/controller/UserBasicInfoController.java index 227def7c5..0f380d2c0 100644 --- a/mallinkPublicApi/src/main/java/com/iformall/controller/UserBasicInfoController.java +++ b/mallinkPublicApi/src/main/java/com/iformall/controller/UserBasicInfoController.java @@ -2,10 +2,12 @@ package com.iformall.controller; import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; +import com.iformall.domain.po.WxCUser; import com.iformall.domain.po.WxCUserBasicInfo; import com.iformall.domain.po.WxLevelConfig; import com.iformall.domain.po.base.TenantEntity; import com.iformall.service.WxCUserBasicInfoService; +import com.iformall.service.WxCUserService; import com.iformall.service.WxLevelConfigService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -26,6 +28,9 @@ public class UserBasicInfoController extends BaseController { private final Logger logger = LoggerFactory.getLogger(this.getClass()); + @Autowired + private WxCUserService wxCUserService; + @Autowired private WxCUserBasicInfoService wxCUserBasicInfoService; @@ -42,6 +47,9 @@ public class UserBasicInfoController extends BaseController { public ResultData userRegister(@RequestBody Map map) { logger.info("UserBasicInfoController >>>>>>>>>>>> userRegister >>>>>>>>>>>>>"+map.toString()); String phone = (String) map.get("phone"); + String nickName = (String) map.get("nickName"); + String sexStr = (String) map.get("sex"); + String avatarUrl = (String) map.get("avatarUrl"); if(StringUtils.isBlank(phone)){ return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"手机号不能为空"); } @@ -49,22 +57,71 @@ public class UserBasicInfoController extends BaseController { return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"手机号格式不正确"); } + Integer sex = 0; + if(StringUtils.isNotBlank(sexStr)){ + try { + sex = Integer.parseInt(sexStr); + } catch (NumberFormatException e) { +// e.printStackTrace(); + } + } + TenantEntity tenantEntity = getTenantInfo(); - WxCUserBasicInfo userBasicInfo = wxCUserBasicInfoService.registerByPhone(tenantEntity, phone); + WxCUserBasicInfo userBasicInfo = wxCUserBasicInfoService.registerByPhone(tenantEntity, phone,nickName,sex,avatarUrl); + + this.setLevel(userBasicInfo,tenantEntity); + + return new ResultData(userBasicInfo); + } + /** + * + * @param + * @return + */ + @PostMapping("/get") + @ApiOperation(value = "会员", notes = "") + public ResultData getUserInfo(@RequestBody Map map) { + logger.info("UserBasicInfoController >>>>>>>>>>>> getUserInfo >>>>>>>>>>>>>"+map.toString()); + String phone = (String) map.get("phone"); + String openId = (String) map.get("openId"); + WxCUserBasicInfo basicInfo = null; + if(StringUtils.isBlank(phone) && StringUtils.isBlank(openId)){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + if(StringUtils.isNotBlank(phone)){ + basicInfo = wxCUserBasicInfoService.findInfoByPhone(getTenantInfo(), phone); + } + if(basicInfo == null && StringUtils.isNotBlank(openId)){ + WxCUser wxCUserQ = new WxCUser(); + wxCUserQ.updateTenantInfo(getTenantInfo()); + wxCUserQ.setOpenId(openId); + WxCUser byOpenId = wxCUserService.getByOpenId(wxCUserQ); + if(byOpenId != null && byOpenId.basicInfoIs()){ + basicInfo = wxCUserBasicInfoService.getById(byOpenId.getUserId(),getTenantInfo().getFinalTenantId()); + } + } + if(basicInfo == null){ + return new ResultData(ErrorCode.USER_IS_EMPTY); + } + + this.setLevel(basicInfo,getTenantInfo()); + + return new ResultData(basicInfo); + } + + private void setLevel(WxCUserBasicInfo basicInfo,TenantEntity tenantEntity){ List levelList = wxLevelConfigService.getByTenantInfo(tenantEntity); - userBasicInfo.setLevelList(levelList); - userBasicInfo.setLevel(WxLevelConfigService.DEFAULT_LEVEL); - if(userBasicInfo.getPoins() != null && userBasicInfo.getPoins() > 0){ + basicInfo.setLevelList(levelList); + basicInfo.setLevel(WxLevelConfigService.DEFAULT_LEVEL); + if(basicInfo.getPoins() != null && basicInfo.getPoins() > 0){ for (WxLevelConfig levelConfig : levelList) { - if (userBasicInfo.getPoins() >= levelConfig.getPoints()) { - userBasicInfo.setLevel(levelConfig.getLevel()); + if (basicInfo.getPoins() >= levelConfig.getPoints()) { + basicInfo.setLevel(levelConfig.getLevel()); } } } - - return new ResultData(userBasicInfo); } } diff --git a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java index 6547ba0c5..8e23783b3 100644 --- a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java @@ -195,6 +195,11 @@ public enum ErrorCode{ ORDER_PRESS_IS_OVERTIME(3010, "砍价已过期"), ORDER_PRESS_IS_COMPLETE(3011, "砍价已完成"), ORDER_UNPAID(3012, "您有未支付的订单"), + ORDER_IS_FIND(3013, "订单已存在"), + ORDER_PAY_IN_REFUND(3014, "订单待退款"), + ORDER_PAY_REFUND(3015, "订单已退款"), + ORDER_PAY_REFUND_FAIL(3016, "订单退款失败"), + ORDER_PAY_EVALUATE(3017, "订单已评价"), ORDER_USER_NOT_MATCH(2013, "订单用户不匹配"), ORDER_COUPON_CHANNEL_NOT_MATCH(2014, "订单渠道不匹配"), ORDER_COUPON_NOT_MATCH(2015, "订单券不匹配"), @@ -609,6 +614,12 @@ public enum ErrorCode{ GOOAGOO_OPEN_FAIL(62002,"数衍信息请求失败"), + /** + * tt + */ + TTCOUPON_IS_EMPTY(63000, "课程不存在"), + TTCOUPON_IS_TAKE_OFF(63001, "课程不在上架状态"), + ; private int code; diff --git a/mallinkService/src/main/java/com/iformall/domain/po/tt/TtCoupon.java b/mallinkService/src/main/java/com/iformall/domain/po/tt/TtCoupon.java index f9791bf03..97639ad06 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/tt/TtCoupon.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/tt/TtCoupon.java @@ -4,6 +4,7 @@ import cn.afterturn.easypoi.excel.annotation.Excel; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.iformall.common.SortColumn; +import com.iformall.domain.po.WxMerchant; import com.iformall.domain.po.base.TenantEntity; import lombok.Data; import lombok.EqualsAndHashCode; @@ -115,14 +116,22 @@ public class TtCoupon extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="作者",name="merchantId") private Long merchantId; - @io.swagger.annotations.ApiModelProperty(value="",name="merchantName") + @io.swagger.annotations.ApiModelProperty(value="",name="merchantName")//弃用 private String merchantName; + @io.swagger.annotations.ApiModelProperty(value="",name="merchantPic")//弃用 + private String merchantPic; @io.swagger.annotations.ApiModelProperty(value="业态",name="businessId") private Long businessId; @io.swagger.annotations.ApiModelProperty(value="",name="businessName") private String businessName; + @TableField(exist = false) + private WxMerchant author; + + @TableField(exist = false) + private TtCoupon couponCoumn; + @TableField(exist = false) @io.swagger.annotations.ApiModelProperty(value = "审批流参数", name = "columnCoupons") private List columnCoupons; diff --git a/mallinkService/src/main/java/com/iformall/domain/po/tt/TtOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/tt/TtOrder.java new file mode 100644 index 000000000..3ab10bb8a --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/tt/TtOrder.java @@ -0,0 +1,84 @@ +package com.iformall.domain.po.tt; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.iformall.domain.po.base.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +@TableName(value = "tt_order") +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public class TtOrder extends TenantEntity { + + protected Long id; + + @io.swagger.annotations.ApiModelProperty(value="c端用户id",name="cUserId") + private Long cUserId; + @TableField(exist = false) + private String nickName; + @TableField(exist = false) + private String phone; + @io.swagger.annotations.ApiModelProperty(value="产品ID(couponId)",name="productId") + private Long productId; + @TableField(exist = false) + private String productTitle; + @TableField(exist = false) + private String productPic; + @TableField(exist = false) + private Long authorId; + @TableField(exist = false) + private String author; + @TableField(exist = false) + private String authorPic; + @io.swagger.annotations.ApiModelProperty(value="支付类型(1:微信,)",name="type") + private Integer type; + @io.swagger.annotations.ApiModelProperty(value="0: 付款 1: 退款",name="paymentType") + private Integer paymentType; + + @io.swagger.annotations.ApiModelProperty(value="支付金额(分):允许有负数,退款时为负值。",name="payment") + private Integer payment; + @io.swagger.annotations.ApiModelProperty(value="支付时间",name="paymentTime") + private Date paymentTime; + + @Excel(name = "订单状态", width = 20, orderNum = "9", replace = {"待付款_0", "已支付_1", "已取消_2", "待退款_3", "已退款_4", "退款失败_5", " _-1"}) + @io.swagger.annotations.ApiModelProperty(value="\"待付款_0\", \"已支付_1\", \"已取消_2\", \"待退款_3\", \"已退款_4\", \"退款失败_5\", \" _-1\"",name="orderStatus") + private Integer orderStatus; + + @Excel(name = "订单日期", width = 20, orderNum = "7", format = "yyyy-MM-dd") + @io.swagger.annotations.ApiModelProperty(value="创建时间/砍价开始时间",name="createDate") + private Date createDate; + @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") + private Date updateDate; + + + public String getPaymentStr() { + return payment != null ? new BigDecimal(payment).divide(new BigDecimal(100)).toPlainString() : paymentStr; + } + + @Excel(name = "订单金额(元)", width = 20, orderNum = "6") + @TableField(exist = false) + private String paymentStr; + + @TableField(exist = false) + protected TtCoupon ttCoupon; + + @TableField(exist = false) + protected List statusS; + + @TableField(exist = false) + @io.swagger.annotations.ApiModelProperty(value="查询-起始时间",name="startdate") + private Date startdate; + + @TableField(exist = false) + @io.swagger.annotations.ApiModelProperty(value="查询-结束时间",name="enddate") + private Date enddate; + +} diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumPayWay.java b/mallinkService/src/main/java/com/iformall/enums/EnumPayWay.java index e468f7e6f..43e6a57dd 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumPayWay.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumPayWay.java @@ -10,6 +10,7 @@ public enum EnumPayWay { PAY_WAY_WECHAT_WAP(2, "微信H5",EnumPayWayType.WX_H5PAY,EnumAppPlat.WX,null), PAY_WAY_ALIPAY(3, "支付宝",EnumPayWayType.ALI_MINIPAY,EnumAppPlat.ALI,null), PAY_WAY_ALIPAY_WAP(4, "支付宝H5",EnumPayWayType.ALI_H5PAY,EnumAppPlat.ALI,null), + PAY_WAY_TT(5, "抖音担保支付",EnumPayWayType.TT_PAY,EnumAppPlat.TOUTIAO,null), PAY_WAY_POS_B(10, "POS B端",EnumPayWayType.POS,null,null), PAY_WAY_POS_NEU(11, "POS 东软",EnumPayWayType.NEU_POS,null,EnumCardSpendFrom.POS), PAY_WAY_NOT_UNPAY_MERCHANT(91, "商户注券,无需支付",null,null,null), @@ -71,6 +72,6 @@ public enum EnumPayWay { public static enum EnumPayWayType { - WX_MINIPAY,WX_H5PAY,ALI_MINIPAY,ALI_H5PAY,NEU_POS,POS + WX_MINIPAY,WX_H5PAY,ALI_MINIPAY,ALI_H5PAY,TT_PAY,NEU_POS,POS } } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumTtCouponStatus.java b/mallinkService/src/main/java/com/iformall/enums/EnumTtCouponStatus.java new file mode 100644 index 000000000..a1f47b825 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumTtCouponStatus.java @@ -0,0 +1,41 @@ +package com.iformall.enums; + +/** + * Created by Stormeye on 2018/08/09. + */ +public enum EnumTtCouponStatus { + + TTCOUPON_STATUS_DRAFT(1, "草稿"), + TTCOUPON_STATUS_EXAMINE(2, "审核中"), + TTCOUPON_STATUS_REJECT(3, "已驳回"), + TTCOUPON_STATUS_BEFOR_SHELF(4, "待上架"), + TTCOUPON_STATUS_SHELFING(5, "已上架"), + TTCOUPON_STATUS_AFTER_SHELF(6, "已下架"), + + ; + + public static EnumTtCouponStatus getEnum(Integer code) { + for (EnumTtCouponStatus value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumTtCouponStatus(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumTtCouponType.java b/mallinkService/src/main/java/com/iformall/enums/EnumTtCouponType.java new file mode 100644 index 000000000..154e5f123 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumTtCouponType.java @@ -0,0 +1,38 @@ +package com.iformall.enums; + +/** + * Created by Stormeye on 2018/08/09. + */ +public enum EnumTtCouponType { + + + COUPON_COLUMN(1, "专栏"), + COUPON_SINGLE(2, "单课程"), + COUPON_MORE(3, "子课程"), + ; + + public static EnumTtCouponType getEnum(Integer code) { + for (EnumTtCouponType value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumTtCouponType(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/TtOrderMapper.java b/mallinkService/src/main/java/com/iformall/mapper/TtOrderMapper.java new file mode 100644 index 000000000..b16fde7c9 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/TtOrderMapper.java @@ -0,0 +1,20 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.dto.WxOrderReportDto; +import com.iformall.domain.po.WxOrder; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.po.tt.TtOrder; +import com.iformall.domain.vo.*; +import org.apache.ibatis.annotations.Param; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public interface TtOrderMapper extends CommonMapper { + + List findList(TtOrder record); + + Integer findListCount(TtOrder orderQ); +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxCUserBasicInfoService.java b/mallinkService/src/main/java/com/iformall/service/WxCUserBasicInfoService.java index 6ddbadcef..5bcc4ab3c 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCUserBasicInfoService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCUserBasicInfoService.java @@ -175,7 +175,7 @@ public interface WxCUserBasicInfoService { void updateQrCode(WxCUserBasicInfo wxCUserBasicInfo); - WxCUserBasicInfo registerByPhone(TenantEntity tenantEntity, String phone); + WxCUserBasicInfo registerByPhone(TenantEntity tenantEntity, String phone, String nickName, Integer sex, String avatarUrl); int addCredit(Long userId, TenantEntity tenantInfo, EnumScoreType wechatPhone); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/AliBusinessCircleOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/AliBusinessCircleOrderServiceImpl.java index 05eebad67..a6c058d9d 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/AliBusinessCircleOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/AliBusinessCircleOrderServiceImpl.java @@ -117,7 +117,7 @@ public class AliBusinessCircleOrderServiceImpl implements AliBusinessCircleOrder AliPayCUser aliUser = aliPayCUserService.getByAliPayUserId(userQ); if(aliUser != null){ // WxCUserBasicInfo infoByPhone = wxCUserBasicInfoService.findInfoByPhone(aliUser, aliUser.getPhone()); - WxCUserBasicInfo infoByPhone = wxCUserBasicInfoService.registerByPhone(aliUser, aliUser.getPhone()); + WxCUserBasicInfo infoByPhone = wxCUserBasicInfoService.registerByPhone(aliUser, aliUser.getPhone(),aliUser.getName(),null,null); if(infoByPhone != null ){ record.setCUserId(infoByPhone.getId()); }else{ diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java index d9cac6379..8de95cd9e 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java @@ -638,7 +638,7 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService,IExc } @Override - public WxCUserBasicInfo registerByPhone(TenantEntity tenantEntity, String phone) { + public WxCUserBasicInfo registerByPhone(TenantEntity tenantEntity, String phone, String nickName, Integer sex, String avatarUrl) { if (StringUtils.isBlank(phone)) return null; @@ -648,7 +648,21 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService,IExc basicInfo.setTenantId("," + tenantEntity.getTenantId() + ","); basicInfo.setFinalTenantId(tenantEntity.getFinalTenantId()); basicInfo.setPhone(phone); + basicInfo.setNickName(nickName); + basicInfo.setSex(sex); + basicInfo.setAvatarUrl(avatarUrl); this.save(basicInfo); + }else{ + if(StringUtils.isNotBlank(nickName)){ + basicInfo.setNickName(nickName); + } + if(sex != null){ + basicInfo.setSex(sex); + } + if(StringUtils.isNotBlank(avatarUrl)){ + basicInfo.setAvatarUrl(avatarUrl); + } + wxCUserBasicInfoMapper.updateById(basicInfo); } return basicInfo; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxThirdPartyOrdersServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxThirdPartyOrdersServiceImpl.java index 7e7bb4914..e49f86517 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxThirdPartyOrdersServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxThirdPartyOrdersServiceImpl.java @@ -131,7 +131,7 @@ public class WxThirdPartyOrdersServiceImpl implements WxThirdPartyOrdersService basicInfo = wxCUserBasicInfoService.getById(userId, record.getFinalTenantId()); } if(basicInfo == null){ - basicInfo = wxCUserBasicInfoService.registerByPhone(record, record.getUserPhone()); + basicInfo = wxCUserBasicInfoService.registerByPhone(record, record.getUserPhone(),null,null,null); } if(basicInfo != null){ diff --git a/mallinkService/src/main/java/com/iformall/service/tt/TtCouponService.java b/mallinkService/src/main/java/com/iformall/service/tt/TtCouponService.java index 5bc4f496d..16d53f592 100644 --- a/mallinkService/src/main/java/com/iformall/service/tt/TtCouponService.java +++ b/mallinkService/src/main/java/com/iformall/service/tt/TtCouponService.java @@ -38,4 +38,5 @@ public interface TtCouponService { */ void deleteById(Long id); + TtCoupon detail(Long productId); } diff --git a/mallinkService/src/main/java/com/iformall/service/tt/TtOrderService.java b/mallinkService/src/main/java/com/iformall/service/tt/TtOrderService.java new file mode 100644 index 000000000..2839d9473 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/tt/TtOrderService.java @@ -0,0 +1,27 @@ +package com.iformall.service.tt; + +import com.github.pagehelper.PageInfo; +import com.iformall.common.ResultData; +import com.iformall.domain.dto.OrderSaveDto; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.po.tt.TtOrder; +import com.iformall.enums.EnumPayWay; + +public interface TtOrderService { + + /** + * 根据实体查询分页列表 + * + * @param record + * @param pageIndex + * @param pageSize + * @return + */ + PageInfo listAsPage(TtOrder record, Integer pageIndex, Integer pageSize); + + ResultData saveOrder(Long couponId, Long memberId, EnumPayWay payWay, TenantEntity tenantInfo); + + ResultData cancelOrder(Long orderId, Long memberId); + + TtOrder detail(Long orderId, Long memberId); +} diff --git a/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java index d65ae78f4..095a9b5ef 100644 --- a/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/tt/impl/TtCouponServiceImpl.java @@ -7,6 +7,7 @@ import com.iformall.common.IdWorker; import com.iformall.common.ResultData; import com.iformall.domain.po.tt.TtCoupon; import com.iformall.mapper.*; +import com.iformall.service.WxMerchantService; import com.iformall.service.tt.TtCouponService; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -26,6 +27,9 @@ public class TtCouponServiceImpl implements TtCouponService { @Autowired TtCouponMapper ttCouponMapper; + @Autowired + WxMerchantService wxMerchantService; + @Override public PageInfo listAsPage(TtCoupon record, Integer pageIndex, Integer pageSize) { @@ -69,7 +73,6 @@ public class TtCouponServiceImpl implements TtCouponService { } else { record.setUpdateDate(new Date()); ttCouponMapper.updateById(record); - } return new ResultData(record.getId()); } @@ -78,4 +81,11 @@ public class TtCouponServiceImpl implements TtCouponService { public void deleteById(Long id) { ttCouponMapper.deleteById(id); } + + @Override + public TtCoupon detail(Long productId) { + TtCoupon byId = this.getById(productId); + byId.setAuthor(wxMerchantService.getById(byId.getMerchantId())); + return byId; + } } diff --git a/mallinkService/src/main/java/com/iformall/service/tt/impl/TtOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/tt/impl/TtOrderServiceImpl.java new file mode 100644 index 000000000..6e11fd0ec --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/tt/impl/TtOrderServiceImpl.java @@ -0,0 +1,156 @@ +package com.iformall.service.tt.impl; + +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.iformall.common.ErrorCode; +import com.iformall.common.IdWorker; +import com.iformall.common.ResultData; +import com.iformall.domain.po.*; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.po.tt.TtCoupon; +import com.iformall.domain.po.tt.TtOrder; +import com.iformall.enums.*; +import com.iformall.exception.MallinkException; +import com.iformall.mapper.*; +import com.iformall.service.WxCUserBasicInfoService; +import com.iformall.service.tt.TtCouponService; +import com.iformall.service.tt.TtOrderService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; + + +@Service +public class TtOrderServiceImpl implements TtOrderService { + + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private TtOrderMapper ttOrderMapper; + + @Autowired + private TtCouponService ttCouponService; + + @Autowired + private WxCUserBasicInfoService wxCUserBasicInfoService; + + @Override + public PageInfo listAsPage(TtOrder record, Integer pageIndex, Integer pageSize) { + return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> ttOrderMapper.findList(record)); + } + + @Override + public ResultData saveOrder(Long couponId,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity) { + logger.info("OrderSave: couponId:" + couponId + "---cUserId:"+cUserId); + WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoService.getById(cUserId,tenantEntity.getFinalTenantId()); + if(wxCUserBasicInfo == null){ + return new ResultData(ErrorCode.USER_IS_EMPTY); + } + TtOrder orderQ = new TtOrder(); + orderQ.setCUserId(cUserId); + orderQ.setProductId(couponId); + List statuss = new ArrayList<>(); + statuss.add(EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode()); + statuss.add(EnumOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS.getCode()); + orderQ.setStatusS(statuss); + Integer listCount = ttOrderMapper.findListCount(orderQ); + if(listCount.intValue() > 0){ + return new ResultData(ErrorCode.ORDER_IS_FIND); + } + + if (wxCUserBasicInfo.getStatus().equals(EnumCUserBasicInfoStatus.LOCKED.getCode())) { + logger.info("会员权益被锁定:cUserId:" + cUserId); + return new ResultData(ErrorCode.MEMBER_IS_LOCKED); + } + TtCoupon coupon = ttCouponService.getById(couponId); + if (null == coupon) { + return new ResultData(ErrorCode.TTCOUPON_IS_EMPTY); + } + if (!coupon.getStatus().equals(EnumTtCouponStatus.TTCOUPON_STATUS_SHELFING.getCode())) { + return new ResultData(ErrorCode.TTCOUPON_IS_TAKE_OFF); + } + + try { + // 4.2 保存订单 + final IdWorker idWorker = IdWorker.get(); + Date now = new Date(); + TtOrder order = new TtOrder(); + order.setId(idWorker.nextId()); + order.updateTenantInfo(tenantEntity); + order.setCUserId(wxCUserBasicInfo.getId()); + order.setProductId(coupon.getId()); + order.setType(payWay.getCode()); + order.setPaymentType(EnumPayType.PAY_PAYMENT.getCode()); + order.setPayment(coupon.getSalePrice()); + if(order.getPayment() == null || order.getPayment().intValue() == 0){ + order.setOrderStatus(EnumOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS.getCode()); + order.setPaymentTime(now); + }else{ + order.setOrderStatus(EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode()); + } + order.setCreateDate(now); + order.setUpdateDate(now); + ttOrderMapper.insert(order); + return new ResultData(order); + } catch (MallinkException e) { + logger.error(e.getMessage()); + return new ResultData(e.getErrorCode(), e.getMessage()); + } catch (Exception e) { + logger.error(e.getMessage()); + return new ResultData(ErrorCode.ORDER_IS_FAIL, e.getMessage()); + } + } + + @Override + public ResultData cancelOrder(Long orderId, Long memberId) { + TtOrder ttOrder = ttOrderMapper.selectById(orderId); + if(ttOrder == null){ + return new ResultData(ErrorCode.ORDER_IS_NOT_FIND); + } + if(memberId != null && !ttOrder.getCUserId().equals(memberId)){ + return new ResultData(ErrorCode.ORDER_USER_NOT_MATCH); + } + if(ttOrder.getOrderStatus().equals(EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode())){//订单待付款 + TtOrder record = new TtOrder(); + record.setId(ttOrder.getId()); + record.setOrderStatus(EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL.getCode()); + record.setUpdateDate(new Date()); + ttOrderMapper.updateById(record); + return new ResultData(); + }else + if(ttOrder.getOrderStatus().equals(EnumOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS.getCode())){//订单已支付 + return new ResultData(ErrorCode.ORDER_HAD_PAY); + }else + if(ttOrder.getOrderStatus().equals(EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL.getCode())){//订单已取消 + return new ResultData(ErrorCode.ORDER_HAD_CANCEL); + }else + if(ttOrder.getOrderStatus().equals(EnumOrderStatus.ORDER_STATUS_PENDING_REFUND.getCode())){//订单待退款 + return new ResultData(ErrorCode.ORDER_PAY_IN_REFUND); + }else + if(ttOrder.getOrderStatus().equals(EnumOrderStatus.ORDER_STATUS_REFUND_SUCCESS.getCode())){//订单已退款 + return new ResultData(ErrorCode.ORDER_PAY_REFUND); + }else + if(ttOrder.getOrderStatus().equals(EnumOrderStatus.ORDER_STATUS_REFUND_FAILD.getCode())){//订单退款失败 + return new ResultData(ErrorCode.ORDER_PAY_REFUND_FAIL); + } + return new ResultData(ErrorCode.ORDER_IS_FAIL); + } + + @Override + public TtOrder detail(Long orderId, Long memberId) { + TtOrder ttOrder = ttOrderMapper.selectById(orderId); + if(ttOrder == null){ + return null; + } + if(memberId != null && !ttOrder.getCUserId().equals(memberId)){ + return null; + } + TtCoupon coupon = ttCouponService.detail(ttOrder.getProductId()); + ttOrder.setTtCoupon(coupon); + return ttOrder; + } + +} diff --git a/mallinkService/src/main/resources/mapper/TtCouponMapper.xml b/mallinkService/src/main/resources/mapper/TtCouponMapper.xml index 6df1b5d25..f59e9e4bd 100644 --- a/mallinkService/src/main/resources/mapper/TtCouponMapper.xml +++ b/mallinkService/src/main/resources/mapper/TtCouponMapper.xml @@ -37,6 +37,7 @@ + @@ -47,7 +48,7 @@ `sale_price`, `orig_price`, `is_preview`, `preview_duration`, `detail`, `false_sell_count`, `dy_title`, `inventory`, `remark`, `status`, `create_date`, `update_date`, `see_count`, `sell_count`, `assess_count`, `collect_count`, `is_del`, - `column_id`, `popularity`, `merchant_id`, `merchant_name`, `business_id`, `business_name` + `column_id`, `popularity`, `merchant_id`, `merchant_name`,`merchant_pic`, `business_id`, `business_name` @@ -88,8 +89,11 @@ and `status` = #{status} - - and `create_date` between #{startdate} and #{enddate} + + and `create_date` >= #{startdate} + + + and `create_date` <= #{enddate} diff --git a/mallinkService/src/main/resources/mapper/TtOrderMapper.xml b/mallinkService/src/main/resources/mapper/TtOrderMapper.xml new file mode 100644 index 000000000..5bfbf940b --- /dev/null +++ b/mallinkService/src/main/resources/mapper/TtOrderMapper.xml @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + o.`id`,o.`tenant_id`,o.`parent_tenant_id`,o.`c_user_id`,o.`product_id`,o.`type`,o.`payment_type`,o.`payment`, + o.`payment_time`,o.`order_status`,o.`create_date`,o.`update_date`, + u.`nick_name`,u.`phone`, + c.`title` product_title,c.`coverImg` product_pic, + m.`name` author,m.`imgUrl` author_pic + + + + where 1 = 1 + + + and o.`id` = #{id} + + + + and o.`tenant_id` = #{tenantId} + + + and o.`parent_tenant_id` = #{parentTenantId} + + + + and o.`c_user_id` = #{cUserId} + + + + and o.`product_id` = #{productId} + + + + and o.`type` = #{type} + + + + and o.`payment_type` = #{paymentType} + + + + and o.`payment_time` >= #{startdate} + + + and o.`payment_time` <= #{enddate} + + + + and o.`order_status` = #{orderStatus} + + + + and u.`nick_name` like concat('%', #{nickName},'%') + + + + and u.`phone` like concat('%', #{phone},'%') + + + + and c.`title` like concat('%', #{productTitle},'%') + + + + and c.merchant_id = #{authorId} + + + + and m.`name` like concat('%', #{author},'%') + + + + and o.`order_status` in + + #{sItem} + + + + + and o.`id` in + + #{idItem} + + + order by o.`update_date` desc + + + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxCUserMapper.xml b/mallinkService/src/main/resources/mapper/WxCUserMapper.xml index cd4ca2b36..091a26c95 100644 --- a/mallinkService/src/main/resources/mapper/WxCUserMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCUserMapper.xml @@ -269,7 +269,11 @@