123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723 |
- package com.iamberry.rent.service.machine;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import com.iamberry.rent.face.efast.EfastRentService;
- import com.iamberry.wechat.core.entity.rent.*;
- import org.apache.commons.lang.ObjectUtils;
- import org.apache.commons.lang3.StringUtils;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.scheduling.annotation.Scheduled;
- import org.springframework.stereotype.Service;
- import com.iamberry.exception.ServiceException;
- import com.iamberry.rent.face.machine.MachineService;
- import com.iamberry.rent.face.rebate.OrderRebateService;
- import com.iamberry.rent.service.machine.mapper.MachineMapper;
- import com.iamberry.rent.service.order.mapper.RentOrderMapper;
- import com.iamberry.rent.service.order.mapper.ServiceCouponMapper;
- import com.iamberry.rent.service.rebate.mapper.OrderRebateMapper;
- import com.iamberry.wechat.core.entity.ResultMsg;
- import com.iamberry.wechat.core.entity.member.Member;
- import com.iamberry.wechat.core.entity.pay.PayResult;
- import com.iamberry.wechat.face.member.MemberService;
- import com.iamberry.wechat.face.pay.PayService;
- import com.iamberry.wechat.face.wechat.ConfigService;
- import com.iamberry.wechat.iot.WechatIotUtils;
- import com.iamberry.wechat.tools.DateTimeUtil;
- import com.iamberry.wechat.tools.NameUtils;
- import com.iamberry.wechat.tools.OrderNOUtil;
- import com.iamberry.wechat.tools.ResponseJson;
- import com.iamberry.wechat.tools.ResultInfo;
- import net.sf.json.JSONObject;
- /**
- * 机器业务实现类
- * @company 深圳爱贝源科技有限公司
- * @website www.iamberry.com
- * @author 献
- * @tel 18271840547
- * @date 2017年3月9日
- */
- @Service
- public class MachineServiceImpl implements MachineService {
- @Autowired
- private MachineMapper machineMapper;
- @Autowired
- private RentOrderMapper rentOrderMapper;
- @Autowired
- private ConfigService configService;
- private static final Logger LOGGER = LoggerFactory.getLogger(MachineService.class);
- @Autowired
- private ServiceCouponMapper couponMapper;
- @Autowired
- private PayService payService;
- @Autowired
- private OrderRebateService orderRebateService;
- @Autowired
- private OrderRebateMapper orderRebateMapper;
- @Autowired
- private MemberService memberService;
- @Autowired
- private EfastRentService efastRentService;
- @Override
- public int initBefore(MachineInfo machineInfo) throws ServiceException {
- // TODO Auto-generated method stub
- if (machineInfo == null || machineInfo.getMachineDeviceId() == null
- || machineInfo.getMachineOpenid() == null) {
- return 0;
- }
- // 激活时间
- Date nowDate = new Date();
- // 查询机器信息 , 只有没有激活的机器才能绑定
- String openid = machineInfo.getMachineOpenid();
- machineInfo.setMachineOpenid(null);
- List<MachineInfo> infos = machineMapper.list(machineInfo);
- if (infos == null || infos.isEmpty()) {
- LOGGER.error("{'errorCode':{}, 'msg':'机器信息不存在,请管理员审核!', 'deviceid':'{}'}", 500, machineInfo.getMachineDeviceId());
- return 0;
- }
- MachineInfo temp = infos.get(0);
- if (temp.getMachineInitState() != 2) {
- return 500; // 已经激活的机器不能做激活使用,留待优化:查询续费记录中没有下发成功的命令,如果存在,则下发续费指令
- }
- // 激活
- machineInfo.setMachineOpenid(openid);
- List<RentOrderItem> list = rentOrderMapper.listInitCode(machineInfo.getMachineOpenid()); // 自己拥有订单
- RentOrderItem item = null;
- if (list != null && !list.isEmpty()) {
- item = list.get(0); // 从订单中选择第一个做激活使用
- } else {
- item = rentOrderMapper.getWaitInit(machineInfo.getMachineOpenid()); // 别人分享的订单
- }
- if (item == null) {
- return 0;
- }
- // 修改订单激活码状态
- item.setItemInitCodeOldState(1);
- item.setItemCodeState(2);
- Integer res = rentOrderMapper.update(item);
- if (res == null || res <= 0) {
- LOGGER.error("{'method':'{}', 'deviceId':'{}', 'openid':'{}', 'itemId':{}}",
- "修改订单项中状态失败", machineInfo.getMachineDeviceId(), machineInfo.getMachineOpenid(), item.getItemId());
- return 0;
- }
- // 准备命令
- // 计算下发的小时数:结束时间 - 当前时间 / 1000 = x 秒 / 60 = y 分 / 60 = z 小时
- long hour = (DateTimeUtil.addMonth(item.getItemUseYears()).getTime() - nowDate.getTime()) / 1000 / 60 / 60;
- String hourStr = WechatIotUtils.align(Long.toString(hour)); // 补0
- String waterNum = WechatIotUtils.align(item.getItemMachineNum().toString()); // 补0
- String message = String.format(WechatIotUtils.INIT_MACHINE_COMMAND, hourStr, waterNum);
- // 封装数据 & 修改机器的状态 说明:通过行级锁保证正确性,一旦A 修改 deviceid='ABC'的记录后,那么后来者在A未提交事务之前,无法修改ABC记录,需要等待A将事务提交,释放行级锁
- temp.setMachineSurplusWater(item.getItemMachineNum());
- temp.setMachineTotalWater(item.getItemMachineNum());
- temp.setMachineStopDate(DateTimeUtil.addMonth(item.getItemUseYears()));
- temp.setMachineConnectState(1); // 修改机器的状态为已连接
- temp.setMachineInitState(3); // 激活中
- temp.setMachineActivationTime(nowDate);//激活时间
- temp.setMachineState(1); // 修改为正常使用
- temp.setMachineOrderId(list.get(0).getItemOrderId());
- temp.setMachineOpenid(openid);
- temp.setMachineInitCode(list.get(0).getItemInitCode());
- temp.setMachineNextCommand(message);
- res = machineMapper.update(temp);
- if (res == null || res <= 0) {
- LOGGER.error("{'method':'{}', 'deviceId':'{}', 'openid':'{}', 'itemId':{}}",
- "修改机器信息失败", machineInfo.getMachineDeviceId(), machineInfo.getMachineOpenid(), item.getItemId());
- throw new ServiceException(500, "修改机器信息失败!");
- }
- // 发送消息 : 注意,此处存在待优化的逻辑,在事务中使用HTTP,导致行锁长时间的被当前事务持有,其他事务必须等待
- // JSONObject json = WechatIotUtils.send(configService.getAccessToken(), message,
- // machineInfo.getMachineDeviceId(), machineInfo.getMachineOpenid(), "gh_2674097b2442");
- // if (json == null || json.toString().indexOf("errcode") != -1) {
- // LOGGER.error("{'method':{}, 'msg':{}}", "发送激活信息失败", json.toString());
- // throw new ServiceException(500, "激活命令下发成功,请重试!");
- // }
- // if (json.getInt("ret") != 0) {
- // LOGGER.error("{'method':{}, 'msg':{}}", "发送激活信息失败", json.toString());
- // throw new ServiceException(500, "激活命令下发失败,请重试!");
- // }
- // LOGGER.info("{'deviceId':'{}', 'method':'INIT_SEND_SUCCESS', 'send_msg':'{}'}", machineInfo.getMachineDeviceId(), json.toString());
- return 1;
- }
- @Override
- public int init(String openid, String deviceId) throws ServiceException {
- // TODO Auto-generated method stub
- // 抽象机器
- MachineInfo machineInfo = new MachineInfo();
- machineInfo.setMachineOpenid(openid);
- machineInfo.setMachineDeviceId(deviceId);
- // 查询机器是否存在
- List<MachineInfo> list = machineMapper.list(machineInfo);
- if (list.size() != 1) {
- return 0;
- }
- // 判断激活还是续费
- if (list.get(0).getMachineInitState() != 3 || list.get(0).getMachineInitState() == 1) {
- // 续费
- LOGGER.info(deviceId + ",续费流程");
- return rechargeAfter(openid, deviceId);
- }
- // 激活
- // 查询激活订单是否存在
- RentOrder orderIdByInitCode = rentOrderMapper.getOrderIdByInitCode(list.get(0).getMachineInitCode());
- if (orderIdByInitCode == null || StringUtils.isEmpty(orderIdByInitCode.getRentOrderId())) {
- return 0;
- }
- // 修改机器状态
- machineInfo.setMachineInitState(1); // 已激活
- machineInfo.setMachineNextCommand(""); // 清空命令
- Integer res = machineMapper.update(machineInfo);
- if (res == null || res <= 0) {
- LOGGER.error("{'method':'{}', 'deviceId':'{}', 'openid':'{}', 'orderId':{}}",
- "修改机器信息失败", machineInfo.getMachineDeviceId(), machineInfo.getMachineOpenid(), orderIdByInitCode);
- return 0;
- }
- // 成功 & 触发返利 !!! 注意,此处触发返利的订单所属人,非当前激活订单用户
- if (!orderRebateService.saveRentOrderRebate(orderIdByInitCode.getRentOrderId(), orderIdByInitCode.getRentOpenid())) {
- throw new ServiceException(501, "init - 触发返利任务失败!");
- }
- return 1;
- }
- @Override
- public List<MachineInfo> list(MachineInfo info) {
- // TODO Auto-generated method stub
- return machineMapper.list(info);
- }
- @Override
- public Integer syncMachine(MachineInfo info) {
- // TODO Auto-generated method stub
- int state = info.getMachineState();
- info.setMachineState(null);
- List<MachineInfo> infos = machineMapper.list(info);
- if (infos == null || infos.size() != 1) {
- return 0;
- }
- // TDS
- if (info.getMachineTDS() <= -1) {
- info.setMachineTDS(null);
- }
- //计算剩余水量
- int surplusWater = infos.get(0).getMachineTotalWater() - info.getMachineHaveWater();
- // 不能修改机器所属人
- info.setMachineOpenid(null);
- info.setMachineState(state);
- info.setMachineId(infos.get(0).getMachineId());
- info.setMachineSurplusWater(surplusWater);
- info.setMachineConnectState(1);
- return machineMapper.update(info);
- }
- @Override
- public ResponseJson listServiceCoupon(String openId, String machineId) {
- ResponseJson rj = new ResponseJson();
- rj.setResultCode(200);
- rj.setReturnCode(500);
- rj.setResultMsg("参数有误!该机器不可以续费!");
- if(StringUtils.isEmpty(machineId)){
- return rj;
- }
- //服务费抵扣券下拉框
- ServiceCouponInfo couponInfo = new ServiceCouponInfo();
- couponInfo.setServiceStatus(1); // 未使用的
- couponInfo.setServiceOpenId(openId);
- List<ServiceCouponInfo> couponList = couponMapper.list(couponInfo);
- //机器信息
- MachineInfo mac = new MachineInfo();
- mac.setMachineOpenid(openId);
- mac.setMachineId(Integer.parseInt(machineId));
- List<MachineInfo> list = machineMapper.list(mac);
- if(list == null || list.size() != 1){
- return rj;
- }
- rj.setResultMsg("SUCCESS");
- rj.setReturnCode(200);
- rj.addResponseKeyValue("couponList", couponList);
- rj.addResponseKeyValue("machine", list.get(0));
- return rj;
- }
- @Override
- public ResponseJson requestPay(MachineRecharge machineRecharge, Integer couponId) {
- // TODO Auto-generated method stub
- // 校验机器的状态
- MachineInfo info = new MachineInfo();
- info.setMachineId(machineRecharge.getRechargeMachineId());
- info.setMachineOpenid(machineRecharge.getRechargeOpenId());
- List<MachineInfo> infos = machineMapper.list(info);
- if (infos == null || infos.size() != 1) {
- // 没有找到机器
- return new ResponseJson(200, "NOT_FOUND", 404);
- }
- // 只有已激活 & 已连接的机器才能续费
- info = infos.get(0);
- if (info.getMachineConnectState() != 1 || info.getMachineInitState() != 1) {
- return new ResponseJson(200, "MACHINE_STATE_ERROR", 500);
- }
- // 拼装参数
- int discount = 0;
- ServiceCouponInfo couponInfo = null;
- if (couponId != null && couponId != 0) {
- couponInfo = new ServiceCouponInfo();
- couponInfo.setServiceId(couponId);
- couponInfo.setServiceStatus(1); // 未使用的
- couponInfo.setServiceOpenId(machineRecharge.getRechargeOpenId());
- List<ServiceCouponInfo> couponInfos = couponMapper.list(couponInfo);
- if (couponInfos != null && !couponInfos.isEmpty()) {
- couponInfo = couponInfos.get(0);
- discount = couponInfo.getServiceMoney();
- couponInfo.setServiceStatus(2);
- couponMapper.update(couponInfo); //改為已使用
- }
- }
- if (couponInfo == null) {
- machineRecharge.setRechargeCouponId(0);
- } else {
- machineRecharge.setRechargeCouponId(couponId);
- }
- // 保存数据库
- String orderId = "XF001" + OrderNOUtil.createOrderCode(info.getMachineId());
- machineRecharge.setRechargeOrderId(orderId);
- RentTypeInfo rentTypeInfo = getRentType(machineRecharge.getRechargeDuration());
- machineRecharge.setRechargeWater(rentTypeInfo.getTypeWaterNum()); // 充值水量
- machineRecharge.setRechargeAmount(rentTypeInfo.getTypeServiceMoney() - discount); // 充值金额,单位为分
- machineRecharge.setRechargeDuration(rentTypeInfo.getTypeDuration()); // 充值时长
- machineRecharge.setRechargeMessageState(0);
- machineRecharge.setRechargeState(0);
- machineRecharge.setRechargeEndTime(DateTimeUtil.addMonth(info.getMachineStopDate(), machineRecharge.getRechargeDuration()));
- Integer res = machineMapper.addRecharge(machineRecharge);
- if (res == null || res <= 0) {
- return new ResponseJson(200, "SERVER_ERROR", 500);
- }
- // 请求预支付id
- PayResult payResult = payService.requestPay(machineRecharge.getRechargeOpenId(),
- orderId,
- rentTypeInfo.getTypeServiceMoney() - discount,
- "【租赁】美国watero净饮水一体机!", NameUtils.getConfig("WECHAT_RENT_RECHARGE_BACK"));
- if (payResult.isPaySuccess()) {
- // 修改抵扣券为已使用
- return new ResponseJson(200, "SUCCESS", 200).addResponseKeyValue(orderId)
- .addResponseKeyValue("wechat_pay_id", payResult.getPayData());
- } else {
- return new ResponseJson(200, "REQUEST_PAY_ERROR", 501);
- }
- }
- /**
- * 根据年限查看对应的充值信息
- * 2017年3月28日
- * @author muzx
- * @param years 充值年数
- * @return
- */
- private RentTypeInfo getRentType(int years){
- RentTypeInfo rentType = new RentTypeInfo();
- rentType.setTypeId(years);
- rentType = orderRebateMapper.getRebateType(rentType);
- return rentType;
- }
- @Override
- public ResponseJson rechargeOrderIdPay(String orderId) {
- // TODO Auto-generated method stub
- MachineRecharge machineRecharge = new MachineRecharge();
- machineRecharge.setRechargeOrderId(orderId);
- machineRecharge.setRechargeState(0);
- List<MachineRecharge> listRecharge = machineMapper.listRecharge(machineRecharge);
- if (listRecharge == null || listRecharge.isEmpty() || listRecharge.size() != 1) {
- return new ResponseJson(200, "NOT_FOUND", 404);
- }
- // 请求预支付id
- PayResult payResult = payService.requestPay(listRecharge.get(0).getRechargeOpenId(), orderId,
- listRecharge.get(0).getRechargeAmount(),
- "【租赁】美国watero净饮水一体机!", NameUtils.getConfig("WECHAT_RENT_RECHARGE_BACK"));
- if (payResult.isPaySuccess()) {
- return new ResponseJson(200, "SUCCESS", 200).addResponseKeyValue(orderId)
- .addResponseKeyValue("wechat_pay_id", payResult.getPayData());
- } else {
- return new ResponseJson(200, "REQUEST_PAY_ERROR", 501).addResponseKeyValue(payResult.getPayData());
- }
- }
- @Override
- public Integer rechargeOrderPayCallback(String orderId, String transactionId) {
- // TODO Auto-generated method stub
- // 校验续费记录是否存在
- MachineRecharge machineRecharge = new MachineRecharge();
- machineRecharge.setRechargeOrderId(orderId);
- machineRecharge.setRechargeState(0);
- List<MachineRecharge> listRecharge = machineMapper.listRecharge(machineRecharge);
- if (listRecharge == null || listRecharge.isEmpty() || listRecharge.size() != 1) {
- return 3;
- }
- machineRecharge.setRechargeId(listRecharge.get(0).getRechargeId());
- // 修改服务券状态
- Integer couponId = listRecharge.get(0).getRechargeCouponId();
- if (couponId != 0) {
- ServiceCouponInfo info = new ServiceCouponInfo();
- info.setServiceId(couponId);
- info.setServiceStatus(3);
- couponMapper.update(info);
- }
- // 查询机器信息
- MachineInfo info = new MachineInfo();
- info.setMachineId(listRecharge.get(0).getRechargeMachineId());
- List<MachineInfo> list = machineMapper.list(info);
- if (list == null || list.size() != 1) {
- return 2;
- }
- // 计算下发的小时数:结束时间 - 当前时间 / 1000 = x 秒 / 60 = y 分 / 60 = z 小时z
- long hour = (DateTimeUtil.addMonth(listRecharge.get(0).getRechargeDuration()).getTime() - new Date().getTime()) / 1000 / 60 / 60;
- // 发送续费消息 : 注意,此处存在待优化的逻辑,在事务中使用HTTP,导致行锁长时间的被当前事务持有,其他事务必须等待
- // 补0
- info = list.get(0);
- String hourStr = WechatIotUtils.align(Long.toString(hour));
- String waterNum = WechatIotUtils.align(String.valueOf(info.getMachineSurplusWater() + listRecharge.get(0).getRechargeWater()));
- String message = String.format(WechatIotUtils.INIT_MACHINE_COMMAND, hourStr, waterNum);
- /* JSONObject json = WechatIotUtils.send(configService.getAccessToken(), message,
- list.get(0).getMachineDeviceId(), list.get(0).getMachineOpenid(), "gh_2674097b2442");
- if (json == null || json.toString().indexOf("errcode") != -1) {
- LOGGER.error("{'method':{}, 'msg':{}}", "发送激活信息失败", json.toString());
- machineRecharge.setRechargeMessageState(2);
- } else {
- machineRecharge.setRechargeMessageState(1);
- }*/
- // 修改机器信息
- info.setMachineStopDate(listRecharge.get(0).getRechargeEndTime());
- info.setMachineSurplusWater(info.getMachineSurplusWater() + listRecharge.get(0).getRechargeWater());
- info.setMachineTotalWater(listRecharge.get(0).getRechargeWater() + info.getMachineSurplusWater());
- info.setMachineState(1);
- info.setMachineNextCommand(message); // 保存指令
- Integer res = machineMapper.update(info);
- if (res == null || res <= 0) {
- throw new IllegalArgumentException();
- }
- // 修改续费订单的状态:待确认下发命令 & 支付成功
- machineRecharge.setRechargeMessageState(2);
- machineRecharge.setRechargeState(1);
- machineRecharge.setRechargePayTime(new Date());
- machineRecharge.setRechargeWxOrderId(transactionId);
- res = machineMapper.updateRecharge(machineRecharge);
- return res;
- }
- /**
- * 续费以后 - 接受到续费成功命令后修改
- * @param openid
- * @throws ServiceException
- * @author 献
- * @Time 2017年4月5日
- */
- public int rechargeAfter(String openid, String deviceId) throws ServiceException {
- // 查询机器信息
- MachineInfo info = new MachineInfo();
- info.setMachineDeviceId(deviceId);
- // info = machineMapper.list(info).get(0);
- if (machineMapper.list(info) == null) {
- return 0;
- }
- // 查询续费记录 : 查询所有支付成功,并且消息下发失败的
- MachineRecharge machineRecharge = new MachineRecharge();
- machineRecharge.setRechargeOpenId(openid);
- machineRecharge.setRechargeState(1);
- machineRecharge.setRechargeMessageState(2);
- machineRecharge.setRechargeMachineId(info.getMachineId());
- List<MachineRecharge> listRecharge = machineMapper.listRecharge(machineRecharge);
- if (listRecharge == null || listRecharge.isEmpty()) {
- return 0;
- }
- // 修改续费订单的状态
- for (MachineRecharge machineRecharge2 : listRecharge) {
- machineRecharge = new MachineRecharge();
- machineRecharge.setRechargeId(machineRecharge2.getRechargeId());
- machineRecharge.setRechargeMessageState(1);
- machineRecharge.setRechargePayTime(new Date());
- machineRecharge.setRechargeWxOrderId(machineRecharge2.getRechargeWxOrderId());
- machineRecharge.setRechargeState(1);
- machineMapper.updateRecharge(machineRecharge);
- }
- // 修改机器中的 下一条指令
- info.setMachineNextCommand("");
- machineMapper.update(info);
-
- return 1;
- }
- @Override
- public List<MachineRecharge> listRecharge(Integer machineId) {
- // TODO Auto-generated method stub
- MachineRecharge machineRecharge = new MachineRecharge();
- machineRecharge.setRechargeMachineId(machineId);
- machineRecharge.setRechargeState(1);
- return machineMapper.listRecharge(machineRecharge);
- }
- @Override
- public List<MachineInfo> selectEquipmentList(MachineInfo machineInfo) {
- // TODO Auto-generated method stub
- return machineMapper.selectEquipmentList(machineInfo);
- }
- @Override
- public Integer selectEquipmentCount(MachineInfo machineInfo) {
- // TODO Auto-generated method stub
- return machineMapper.selectEquipmentCount(machineInfo);
- }
- @Override
- public Integer add(MachineInfo info) {
- // TODO Auto-generated method stub
- return machineMapper.add(info);
- }
- @Override
- public MachineRecharge getRechargeByIdOrOrderId(MachineRecharge recharge) {
- // TODO Auto-generated method stub
- return machineMapper.getRechargeByIdOrOrderId(recharge);
- }
- @Override
- public ResultMsg presentMachine(String orderItemId, String openId) {
- ResultMsg rm = new ResultMsg();
- rm.setMessage(ResultInfo.ERRORCODE);
- rm.setStatus(false);
- if(StringUtils.isEmpty(orderItemId)){
- rm.setMessage("请选择正确的机器!");
- return rm;
- }
- RentOrderItem item = new RentOrderItem();
- item.setItemId(Integer.parseInt(orderItemId));
- item = rentOrderMapper.getOrderItemByInitCode(item);
- if(item == null || item.getItemProductType() != 1){
- rm.setMessage("该机器不可以送人!");
- return rm;
- }
- if(StringUtils.isEmpty(item.getItemInitCode()) || item.getItemCodeState() != 1){
- rm.setMessage("该激活码已经被激活,不可以送人!");
- return rm;
- }
- MachineShare machineShare = new MachineShare();
- machineShare.setShareOpenId(openId);
- machineShare.setShareTime(new Date());
- machineShare.setShareCode(item.getItemInitCode());
- if(machineMapper.insertMachineShare(machineShare) != null){
- rm.setStatus(true);
- rm.setResultCode(ResultInfo.SUCCESSCODE);
- rm.setMessage("");
- rm.setData(machineShare.getShareId());
- }else{
- rm.setMessage("赠送失败!请确认后重试!");
- }
- return rm;
- }
- @Override
- public ResultMsg receiveMachine(String shareId, String openId) {
- ResultMsg rm = new ResultMsg();
- rm.setMessage(ResultInfo.ERRORCODE);
- rm.setResultCode("500");
- rm.setStatus(false);
- if(StringUtils.isEmpty(shareId)){
- rm.setMessage("分享有误!请联系分享用户重新分享!");
- return rm;
- }
- MachineShare machineShare = machineMapper.getMachineShareById(shareId);
- if(machineShare == null){
- rm.setMessage("分享有误!请联系分享您的用户重新分享!");
- return rm;
- }
- Member member = memberService.getMemberByUserOpenId(machineShare.getShareOpenId());
- Map<String, Object> map = new HashMap<String, Object>();
- map.put("userName", member.getUserNickname());
- map.put("userHead", member.getUserHead());
- map.put("userDate", DateTimeUtil.format(machineShare.getShareTime()));
- map.put("isUsed", "0");
- rm.setData(map);
- rm.setResultCode("200");
- if(StringUtils.isNotEmpty(machineShare.getShareReOpenid())){
- rm.setMessage("这台净水机已经被人领取。");
- if(ObjectUtils.equals(machineShare.getShareReOpenid(), openId)){
- map.put("isUsed", "1");
- }else{
- map.put("isUsed", "2");
- }
- }
- if(ObjectUtils.equals(machineShare.getShareOpenId(), openId)){
- rm.setResultCode("201");
- }else{
- if(StringUtils.isEmpty(machineShare.getShareReOpenid())){
- machineShare.setShareReOpenid(openId);
- machineShare.setShareBindTime(new Date());
- if(machineMapper.updateMachineShare(machineShare) > 0){
- rm.setStatus(true);
- rm.setMessage("");
- }else{
- rm.setMessage("领取机器失败,请联系分享您的用户重新分享!");
- }
- }
- }
- return rm;
- }
- @Override
- public int bindMachineToOpenId(String device_id, String openId) {
- // TODO Auto-generated method stub
- MachineInfo info = new MachineInfo();
- info.setMachineDeviceId(device_id);
- info.setMachineOpenid(openId);
- Integer res = machineMapper.update(info);
- return res == null ? 0 : res;
- }
- @Override
- public MachineInfo selectMachineById(MachineInfo machineInfo) {
- // TODO Auto-generated method stub
- return machineMapper.selectMachineById(machineInfo);
- }
- @Override
- public List<MachineShare> listMachineShareAdmin(MachineShare machineShare) {
- // TODO Auto-generated method stub
- machineShare.getPage().initRecordBegin();
- return machineMapper.listMachineShareAdmin(machineShare);
- }
- @Override
- public int countMachineShare(MachineShare machineShare) {
- // TODO Auto-generated method stub
- return machineMapper.countMachineShare(machineShare);
- }
- /*@Override
- @Scheduled(cron = "0/10 * * * * ?")//每10秒执行一次*/
- public synchronized void handlerNextCommand() {
- // TODO Auto-generated method stub
- List<MachineInfo> listNextCommandMachine = machineMapper.listNextCommandMachine();
- for (MachineInfo machineInfo : listNextCommandMachine) {
- // 第一条消息总是改变数据方向:Server
- String accessToken = configService.getAccessToken();
- WechatIotUtils.send(accessToken, "*setDir0#", machineInfo.getMachineDeviceId(), machineInfo.getMachineOpenid(), "gh_2674097b2442");
- // 接着发送正式的命令
- JSONObject json = WechatIotUtils.send(accessToken, machineInfo.getMachineNextCommand(),
- machineInfo.getMachineDeviceId(), machineInfo.getMachineOpenid(), "gh_2674097b2442");
- if (json == null || json.toString().contains("errcode")) {
- LOGGER.error("{'method':'{}', 'msg':'{}'}", "发送激活信息失败", json.toString());
- } else {
- LOGGER.info("{'device_id':'{}', 'msg':'{}'}", machineInfo.getMachineDeviceId(), "发送激活信息成功");
- }
- }
- }
- @Override
- public Integer update(MachineInfo info) {
- // TODO Auto-generated method stub
- return machineMapper.update(info);
- }
- @Override
- public List<RentChangeLogs> listSelectChangeLogs(
- RentChangeLogs rentChangeLogs) {
- // TODO Auto-generated method stub
- return machineMapper.listSelectChangeLogs(rentChangeLogs);
- }
- @Override
- public Integer saveChangeLogs(List<RentChangeLogs> list, RentOrder rentOrder) throws Exception {
- // TODO Auto-generated method stub
- int id = 0;
- if (list != null && list.size() > 0) {
- //循环插入更换滤芯表中,返回id并推送到百胜系统
- for (RentChangeLogs rentChangeLogs : list) {
- int colorId = 0;
- switch (rentChangeLogs.getLogsFilterType().intValue()) {
- case 1:colorId = 7;break;
- case 2:colorId = 8;break;
- case 3:colorId = 8;break;
- case 4:colorId = 8;break;
- default:colorId = 7;break;
- }
- id = machineMapper.insertFilterLogs(rentChangeLogs);
- if (id > 0) {
- efastRentService.sendRentFilter(rentChangeLogs.getLogsAddressInfo(),"RF00000000"+id,colorId,
- rentChangeLogs.getLogsAddressName(),rentChangeLogs.getLogsAddressTel(),rentOrder.getRentOpenid());
- }
- }
- }
- return id;
- }
- @Override
- public List<RentChangeLogs> listChangeFilterLogs(
- RentChangeLogs rentChangeLogs) {
- // TODO Auto-generated method stub
- return machineMapper.listChangeFilterLogs(rentChangeLogs);
- }
- @Override
- public Integer getChangeFilterCount(RentChangeLogs rentChangeLogs) {
- // TODO Auto-generated method stub
- int count = machineMapper.getChangeFilterCount(rentChangeLogs);
- int pageCount = count % rentChangeLogs.getPage().getPageSize() == 0 ? count/rentChangeLogs.getPage().getPageSize():(count/rentChangeLogs.getPage().getPageSize()) + 1;
- return pageCount;
- }
- @Override
- public Integer addCompeteWater(CompeteWaterInfo competeWaterInfo) {
- return machineMapper.addCompeteWater(competeWaterInfo);
- }
- @Override
- public CompeteWaterInfo selectCompeteWater(String shareId) {
- return machineMapper.selectCompeteWater(shareId);
- }
- @Override
- public boolean updateChangeLogsById(RentChangeLogs rentChangeLogs) {
- int num = machineMapper.updateChangeLogsById(rentChangeLogs);
- if (num > 0) {
- return true;
- } else {
- return false;
- }
- }
- }
|