From d916dab3c1692de28755bf2e441339a9ba797c65 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Fri, 9 Aug 2019 17:55:45 +0800 Subject: [PATCH] =?UTF-8?q?[POS][=E4=BF=AE=E6=94=B9]:POS=E4=BC=9A=E5=91=98?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E7=8A=B6=E6=80=81=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iformall/controller/PosController.java | 31 +++++++++ .../java/com/iformall/service/PosService.java | 7 +++ .../iformall/service/impl/PosServiceImpl.java | 27 ++++++++ .../com/iformall/pos/test/PosAppTest.java | 21 +++++++ .../com/iformall/domain/po/PosMallConfig.java | 35 +++++++++++ .../iformall/mapper/PosMallConfigMapper.java | 16 +++++ .../java/com/iformall/pay/WxPayConstant.java | 1 + .../service/PosMallConfigService.java | 55 ++++++++++++++++ .../impl/PosMallConfigServiceImpl.java | 60 ++++++++++++++++++ .../resources/mapper/PosMallConfigMapper.xml | 63 +++++++++++++++++++ 10 files changed, 316 insertions(+) create mode 100644 mallinkService/src/main/java/com/iformall/domain/po/PosMallConfig.java create mode 100644 mallinkService/src/main/java/com/iformall/mapper/PosMallConfigMapper.java create mode 100644 mallinkService/src/main/java/com/iformall/service/PosMallConfigService.java create mode 100644 mallinkService/src/main/java/com/iformall/service/impl/PosMallConfigServiceImpl.java create mode 100644 mallinkService/src/main/resources/mapper/PosMallConfigMapper.xml diff --git a/mallinkPosApi/src/main/java/com/iformall/controller/PosController.java b/mallinkPosApi/src/main/java/com/iformall/controller/PosController.java index 706c75fb5..19ae02c5a 100644 --- a/mallinkPosApi/src/main/java/com/iformall/controller/PosController.java +++ b/mallinkPosApi/src/main/java/com/iformall/controller/PosController.java @@ -31,6 +31,37 @@ public class PosController extends BaseController { private final PosService posService; private final ThDevInfoService thDevInfoService; + @ApiOperation(value = "获取会员折扣/优惠券是否启用", notes = "{" + + "\"dev_id\":\"string(必填)\"," + + "\"tenant_id\":\"string(必填)\"," + + "\"nonce_str\":\"string(必填)\"}") + @PostMapping("/getPosMemConfigStatus") + public Map getMemStatus(@RequestBody Map params) { + JSONObject payContent = new JSONObject(); + + // 1. check sign + Map retMap = checkSign(params, payContent); + if (retMap != null) { + // 签名相关异常返回 + return retMap; + } + String resKey = payContent.getString("resKey"); + logger.info("resKey: " + resKey); + + try { + retMap = posService.getMemConfigStatus(params); + return buildReturnMap(retMap, resKey, WxPayConstant.RET_SUCCESS, "", WxPayConstant.RET_SUCCESS, null); + } catch (MallinkException e) { + return buildReturnMap(retMap, resKey, WxPayConstant.RET_SUCCESS, "", WxPayConstant.RET_FAIL, + e.getErrorCode(), + e.getMessage()); + } catch (Exception e) { + return buildReturnMap(retMap, resKey, WxPayConstant.RET_SUCCESS, "", WxPayConstant.RET_FAIL, + 500, + e.getMessage()); + } + } + @ApiOperation(value = "获取注册二维码及小票二维码规则", notes = "{" + "\"dev_id\":\"string(必填)\"," + "\"tenant_id\":\"string(必填)\"," + diff --git a/mallinkPosApi/src/main/java/com/iformall/service/PosService.java b/mallinkPosApi/src/main/java/com/iformall/service/PosService.java index 38fe39cd6..155c2a0a7 100644 --- a/mallinkPosApi/src/main/java/com/iformall/service/PosService.java +++ b/mallinkPosApi/src/main/java/com/iformall/service/PosService.java @@ -8,6 +8,13 @@ import java.util.Map; public interface PosService { + + /** + * 获取商城会员设置状态 + * @param params + * @return + */ + Map getMemConfigStatus(Map params) throws MallinkException; /** * 获取商城二维码 * @param params diff --git a/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java b/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java index bbd8ac600..d9f0e71c8 100644 --- a/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java +++ b/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java @@ -35,6 +35,7 @@ public class PosServiceImpl implements PosService { private final Logger logger = LoggerFactory.getLogger(this.getClass()); private final WxMallService mallService; + private final PosMallConfigService posMallConfigService; private final WxCUserService cUserService; private final WxLevelConfigService levelConfigService; private final WxCouponOrderService couponOrderService; @@ -49,6 +50,32 @@ public class PosServiceImpl implements PosService { private final WxCouponMerchantMapper couponMerchantMapper; private final WxCouponMapper couponMapper; + /** + * 获取商城会员设置状态 + * @param params + * @return + */ + @Override + public Map getMemConfigStatus(Map params) throws MallinkException { + Map retMap = new HashMap<>(); + + String tenantId = params.get(WxPayConstant.TENANT_ID); // 租户ID + + if (StringUtils.isBlank(tenantId)) { + String errMessage = "request params[tenant_id] error."; + logger.error(errMessage); + throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + } + PosMallConfig config = posMallConfigService.getByTenantId(tenantId); + if (config == null) { + logger.error(ErrorCode.MALL_INFO_NOT_FOUND.getMessage()); + throw new MallinkException(ErrorCode.MALL_INFO_NOT_FOUND); + } + retMap.put(WxPayConstant.MEM_DISCOUNT, String.valueOf(config.getDiscount().equals(EnumEnableType.Enable.getCode()))); + retMap.put(WxPayConstant.MEM_COUPON, String.valueOf(config.getCoupon().equals(EnumEnableType.Enable.getCode()))); + return retMap; + } + /** * 获取商城二维码 * @param params diff --git a/mallinkPosApi/src/test/java/com/iformall/pos/test/PosAppTest.java b/mallinkPosApi/src/test/java/com/iformall/pos/test/PosAppTest.java index 4b2ffeb21..a2343d83b 100644 --- a/mallinkPosApi/src/test/java/com/iformall/pos/test/PosAppTest.java +++ b/mallinkPosApi/src/test/java/com/iformall/pos/test/PosAppTest.java @@ -79,6 +79,27 @@ public class PosAppTest { .andDo(MockMvcResultHandlers.print()); } + @Test + public void getPosConfigTest() throws Exception { + Map reqObj = new HashMap<>(); + reqObj.put(WxPayConstant.DEV_ID, devId); + reqObj.put(WxPayConstant.TENANT_ID, tenantId); + reqObj.put(WxPayConstant.SIGN, WxPayment.createSignHMAC(reqObj, devReqKey)); + String reqJsonStr = JSONObject.toJSONString(reqObj); + RequestBuilder request = MockMvcRequestBuilders.post("/getPosMemConfigStatus") + .contentType(MediaType.APPLICATION_JSON) + .content(reqJsonStr); + MvcResult result = mockMvc.perform(request).andReturn(); + String responseStr = result.getResponse().getContentAsString(); + System.out.println(responseStr); + + ObjectMapper mapper = new ObjectMapper(); + Map respMap = mapper.readValue(responseStr, Map.class); + boolean resSigned = WxPayment.verifyNotifyHMAC(respMap, devResKey); + System.out.println("response sign: " + resSigned); + Assert.assertEquals(resSigned, true); + } + @Test public void getQrCodeTest() throws Exception { Map reqObj = new HashMap<>(); diff --git a/mallinkService/src/main/java/com/iformall/domain/po/PosMallConfig.java b/mallinkService/src/main/java/com/iformall/domain/po/PosMallConfig.java new file mode 100644 index 000000000..a5a9d24d4 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/PosMallConfig.java @@ -0,0 +1,35 @@ +package com.iformall.domain.po; + +import lombok.Data; +import javax.persistence.*; +import java.util.*; +import java.math.*; +import javax.persistence.Transient; +import java.util.List; +import javax.persistence.Id; +import java.io.Serializable; + +@Table(name = "pos_mall_config") +@Data +public class PosMallConfig implements Serializable { + private static final long serialVersionUID = 1L; + + @Id + protected Long id; + + @Transient + protected List ids; + + @io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId") + private String tenantId; + @io.swagger.annotations.ApiModelProperty(value="会员折扣状态,0-使用中,1-禁用",name="discount") + private Integer discount; + @io.swagger.annotations.ApiModelProperty(value="会员优惠券状态,0-使用中,1-禁用",name="coupon") + private Integer coupon; + @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate") + private Date createDate; + @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") + private Date updateDate; + + +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/PosMallConfigMapper.java b/mallinkService/src/main/java/com/iformall/mapper/PosMallConfigMapper.java new file mode 100644 index 000000000..c65be81f3 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/PosMallConfigMapper.java @@ -0,0 +1,16 @@ +package com.iformall.mapper; + +import java.util.*; +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.PosMallConfig; + +public interface PosMallConfigMapper extends CommonMapper { + + List findList(PosMallConfig posMallConfig); + + PosMallConfig getByTenantId(String tenantId); + + + + +} diff --git a/mallinkService/src/main/java/com/iformall/pay/WxPayConstant.java b/mallinkService/src/main/java/com/iformall/pay/WxPayConstant.java index c50c91429..b2ab46da9 100644 --- a/mallinkService/src/main/java/com/iformall/pay/WxPayConstant.java +++ b/mallinkService/src/main/java/com/iformall/pay/WxPayConstant.java @@ -36,6 +36,7 @@ public class WxPayConstant { public final static String MEM_DISCOUNT = "discount"; + public final static String MEM_COUPON = "coupon"; public final static String MEM_LEVEL = "level"; public final static String AVAIL_CO_LIST = "avail_co_list"; public final static String ID = "id"; diff --git a/mallinkService/src/main/java/com/iformall/service/PosMallConfigService.java b/mallinkService/src/main/java/com/iformall/service/PosMallConfigService.java new file mode 100644 index 000000000..0a0fda7d8 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/PosMallConfigService.java @@ -0,0 +1,55 @@ +package com.iformall.service; + +import com.github.pagehelper.PageInfo; +import com.iformall.domain.po.PosMallConfig; + +public interface PosMallConfigService { + + /** + * 根据实体查询分页列表 + * + * @param record + * @param pageIndex + * @param pageSize + * @return + */ + PageInfo listAsPage(PosMallConfig record, Integer pageIndex, Integer pageSize); + + /** + * 根据Id获得实体 + * + * @param id + * @return + */ + PosMallConfig getById(Long id); + + /** + * 根据TenantId获得实体 + * + * @param tenantId + * @return + */ + PosMallConfig getByTenantId(String tenantId); + + /** + * 保存或更新实体 + * + * @param record + */ + void saveOrUpdate(PosMallConfig record); + + /** + * 根据Id删除实体 + * + * @param id + */ + void deleteById(Long id); + + + + + + + + +} diff --git a/mallinkService/src/main/java/com/iformall/service/impl/PosMallConfigServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/PosMallConfigServiceImpl.java new file mode 100644 index 000000000..ac82829f0 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/impl/PosMallConfigServiceImpl.java @@ -0,0 +1,60 @@ +package com.iformall.service.impl; + +import java.util.*; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.iformall.domain.po.PosMallConfig; +import com.iformall.mapper.PosMallConfigMapper; +import com.iformall.service.PosMallConfigService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.iformall.common.IdWorker; + +@Service +public class PosMallConfigServiceImpl implements PosMallConfigService { + + @Autowired + PosMallConfigMapper posMallConfigMapper; + + + @Override + public PageInfo listAsPage(PosMallConfig record, Integer pageIndex, Integer pageSize) { + return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> posMallConfigMapper.findList(record)); + } + + @Override + public PosMallConfig getById(Long id) { + return posMallConfigMapper.selectByPrimaryKey(id); + } + + @Override + public PosMallConfig getByTenantId(String id) { + PosMallConfig config = posMallConfigMapper.getByTenantId(id); + return config; + } + + @Override + public void saveOrUpdate(PosMallConfig record) { + if (record.getId() == null) { + //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); + final IdWorker idWorker = IdWorker.get(); + record.setId(idWorker.nextId()); + posMallConfigMapper.insertSelective(record); + } else { + posMallConfigMapper.updateByPrimaryKeySelective(record); + } + } + + @Override + public void deleteById(Long id) { + posMallConfigMapper.deleteByPrimaryKey(id); + } + + + + + + + + +} diff --git a/mallinkService/src/main/resources/mapper/PosMallConfigMapper.xml b/mallinkService/src/main/resources/mapper/PosMallConfigMapper.xml new file mode 100644 index 000000000..23bad233f --- /dev/null +++ b/mallinkService/src/main/resources/mapper/PosMallConfigMapper.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + `id`,`tenant_id`,`discount`,`coupon`,`create_date`,`update_date` + + + + where 1 = 1 + + and `id` = #{id} + + + and `tenant_id` like concat('%', #{tenantId},'%') + + + and `discount` = #{discount} + + + and `coupon` = #{coupon} + + + and `create_date` = #{createDate} + + + and `update_date` = #{updateDate} + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + + + + + + + +