瀏覽代碼

Merge remote-tracking branch 'origin/dev' into dev

renqianlong 1 年之前
父節點
當前提交
578e8ccebc

+ 11 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/common/CommonController.java

@@ -321,6 +321,17 @@ public class CommonController extends BaseController {
         return AjaxResult.success(url);
     }
 
+
+    @ApiOperation("创建用户账号")
+    @PostMapping("common/create/account")
+    public AjaxResult createUserAccount(@RequestBody UserAccountBo bo) {
+        if (!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(), bo.getSign())) {
+            return AjaxResult.error("签名错误");
+        }
+        String url = iGoodsService.createUserAccount(bo);
+        return AjaxResult.success(url);
+    }
+
     @ApiOperation("七大员学员资料批量变更")
     @PostMapping("common/apply/user/profile")
     public AjaxResult updateExamUserProfile(MultipartFile file) {

+ 3 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/utils/poi/ExcelUtil.java

@@ -18,7 +18,9 @@ import com.zhongzheng.common.utils.DictUtils;
 import com.zhongzheng.common.utils.file.FileTypeUtils;
 import com.zhongzheng.common.utils.file.ImageUtils;
 import com.zhongzheng.common.utils.reflect.ReflectUtils;
+import org.apache.poi.hssf.usermodel.*;
 import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
 import org.apache.poi.ss.util.CellRangeAddressList;
 import org.apache.poi.xssf.streaming.SXSSFWorkbook;
 import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
@@ -1477,6 +1479,7 @@ public class ExcelUtil<T>
         this.wb = new SXSSFWorkbook(500);
     }
 
+
     /**
      * 创建工作表
      *

+ 5 - 0
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/UserServiceImpl.java

@@ -1771,6 +1771,11 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
         return baseMapper.getByCardNoTenant(idCard);
     }
 
+    @Override
+    public User getByCardTenant(String idCard,String tenantId) {
+        return baseMapper.getByCardTenant(idCard,tenantId);
+    }
+
     @Override
     public Map<String, Object> importSevenUser(List<UserPeriodImportBo> userList) {
         if (CollectionUtils.isEmpty(userList)) {

+ 87 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/UserAccountBo.java

@@ -0,0 +1,87 @@
+package com.zhongzheng.modules.goods.bo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2022年12月22日 9:35
+ */
+@Data
+public class UserAccountBo implements Serializable {
+
+    @ApiModelProperty("当前时间戳")
+    @NotBlank(message = "当前时间戳不能为空")
+    private Long stamp;
+
+    @ApiModelProperty("签名")
+    @NotBlank(message = "签名不能为空")
+    private String sign;
+
+    @ApiModelProperty("手机号")
+    private String telphone;
+
+    @ApiModelProperty("身份证")
+    private String idCard;
+
+    @ApiModelProperty("密码")
+    private String password;
+
+    @ApiModelProperty("昵称")
+    private String nickname;
+
+    @ApiModelProperty("真实姓名")
+    private String realname;
+
+    @ApiModelProperty("性别 1男 2女")
+    private Integer sex;
+
+    @ApiModelProperty("学历")
+    private String eduLevel;
+
+    @ApiModelProperty("专业")
+    private String major;
+
+    @ApiModelProperty("身份证人像照")
+    private String idCardImg1;
+
+    @ApiModelProperty("身份证国徽照")
+    private String idCardImg2;
+
+    @ApiModelProperty("6旧云学堂")
+    private String registerPlat;
+
+    @ApiModelProperty("一寸照片")
+    private String oneInchPhotos;
+
+    @ApiModelProperty("工作年限")
+    private String workYear;
+
+    @ApiModelProperty("公司名称")
+    private String companyName;
+
+    @ApiModelProperty("工作岗位")
+    private String job;
+
+    @ApiModelProperty("单位联系人")
+    private String unitContact;
+
+    @ApiModelProperty("单位联系电话")
+    private String unitTel;
+
+    @ApiModelProperty("毕业院校")
+    private String school;
+
+    @ApiModelProperty("毕业时间")
+    private String graduationTime;
+
+    @ApiModelProperty("端口标识:1web 2H5")
+    private Integer postSign;
+
+    @ApiModelProperty("旧系统机构ID")
+    private Integer orgId;
+
+}

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/IGoodsService.java

@@ -170,4 +170,6 @@ public interface IGoodsService extends IService<Goods> {
 
     Boolean updateExamBusiness();
 
+	String createUserAccount(UserAccountBo bo);
+
 }

+ 90 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsServiceImpl.java

@@ -24,6 +24,7 @@ import com.zhongzheng.common.utils.*;
 import com.zhongzheng.common.utils.http.HttpUtils;
 import com.zhongzheng.modules.activity.domain.ActivityGoodsPrice;
 import com.zhongzheng.modules.activity.service.IActivityGoodsPriceService;
+import com.zhongzheng.modules.alioss.service.OssService;
 import com.zhongzheng.modules.bank.domain.*;
 import com.zhongzheng.modules.bank.mapper.QuestionMapper;
 import com.zhongzheng.modules.bank.service.*;
@@ -71,9 +72,11 @@ import com.zhongzheng.modules.polyv.service.IPolyvVideoService;
 import com.zhongzheng.modules.system.bo.GoodsCopyEnum;
 import com.zhongzheng.modules.system.domain.SysConfig;
 import com.zhongzheng.modules.system.domain.SysGoodsCopyRecord;
+import com.zhongzheng.modules.system.domain.SysOldOrg;
 import com.zhongzheng.modules.system.domain.SysTenant;
 import com.zhongzheng.modules.system.service.ISysConfigService;
 import com.zhongzheng.modules.system.service.ISysGoodsCopyRecordService;
+import com.zhongzheng.modules.system.service.ISysOldOrgService;
 import com.zhongzheng.modules.system.service.ISysTenantService;
 import com.zhongzheng.modules.user.bo.SubjectStudyRecordQueryBo;
 import com.zhongzheng.modules.user.bo.UserPhoneBo;
@@ -93,9 +96,13 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.OutputStream;
 import java.math.BigDecimal;
+import java.net.HttpURLConnection;
+import java.net.URL;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicReference;
@@ -276,11 +283,16 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
     @Autowired
     private ISysTenantService iSysTenantService;
 
+    @Autowired
+    private ISysOldOrgService iSysOldOrgService;
+
     @Autowired
     private ISysGoodsCopyRecordService iGoodsCopyRecordService;
 
     @Autowired
     private IActivityGoodsPriceService iActivityGoodsPriceService;
+    @Autowired
+    private OssService ossService;
 
 
     @Value("${oldStudySys.educationalInspector}")
@@ -5389,6 +5401,84 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
         return true;
     }
 
+    @Override
+    public String createUserAccount(UserAccountBo bo) {
+        if (ObjectUtils.isNull(bo.getIdCard())){
+            throw new CustomException("身份证不能为空");
+        }
+        SysOldOrg oldOrg = iSysOldOrgService.getOne(new LambdaQueryWrapper<SysOldOrg>()
+                .eq(SysOldOrg::getOrgId, bo.getOrgId())
+                .last("limit 1"));
+        Long tenantId = oldOrg.getTenantId();
+        User user = iUserService.getByCardTenant(bo.getIdCard(),tenantId.toString());
+        if (ObjectUtils.isNull(user)){
+            //用户不存在
+            User u = BeanUtil.toBean(bo, User.class);
+            //雪花算法产生账号ID
+            SnowflakeIdUtils idWorker = new SnowflakeIdUtils(3, 1);
+            u.setUserAccount(String.valueOf(idWorker.nextId()));
+            u.setCreateTime(DateUtils.getNowTime());
+            u.setUpdateTime(DateUtils.getNowTime());
+            u.setStatus(1);
+            //设置默认密码
+            if (ObjectUtils.isNotNull(bo.getPassword())){
+                u.setPasswordAes(EncryptHandler.encrypt(bo.getPassword()));
+                u.setPassword(SecurityUtils.encryptPassword(bo.getPassword()));
+            }else {
+                String substring = bo.getIdCard().substring(bo.getIdCard().length() - 6);
+                u.setPasswordAes(EncryptHandler.encrypt(substring));
+                u.setPassword(SecurityUtils.encryptPassword(substring));
+            }
+
+            //处理身份证照片
+            if (ObjectUtils.isNotNull(bo.getIdCardImg1()) && ObjectUtils.isNotNull(bo.getIdCardImg2())){
+                try {
+                    URL url = new URL(bo.getIdCardImg1());
+                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+                    int responseCode = connection.getResponseCode();
+                    if (responseCode == HttpURLConnection.HTTP_OK) {
+                        InputStream inputStream = connection.getInputStream();
+                        String s = ossService.uploadInputStream(inputStream, 5);
+                        u.setIdCardImg1(s);
+                    }
+                    URL url2 = new URL(bo.getIdCardImg2());
+                    HttpURLConnection connection2 = (HttpURLConnection) url2.openConnection();
+                    int responseCode2 = connection2.getResponseCode();
+                    if (responseCode2 == HttpURLConnection.HTTP_OK) {
+                        InputStream inputStream = connection2.getInputStream();
+                        String s = ossService.uploadInputStream(inputStream, 5);
+                        u.setIdCardImg2(s);
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+
+            }
+            u.setTenantId(tenantId);
+            iUserService.save(u);
+            user = u;
+        }
+
+        //缓存用户信息key
+        String key = String.format("KQTZ%s", user.getUserId());
+        SysTenant sysTenant = iSysTenantService.getById(tenantId);
+        //跳转路径
+        String url = "";
+        if (ObjectUtils.isNotNull(bo.getPostSign()) && bo.getPostSign() == 2){
+            url = String.format("%s%s/pages/learn/index?skipPort=%s", URL_PREFIX, sysTenant.getHostH5(), key);
+        }else {
+            url = String.format("%s%s/person-center/my-course?skipPort=%s", URL_PREFIX, sysTenant.getHostPc(), key);
+        }
+        UserPhoneBo phoneBo = new UserPhoneBo();
+        phoneBo.setTelphone(EncryptHandler.decryptTwo(user.getTelphone()));
+        phoneBo.setTenantId(tenantId);
+        phoneBo.setIdNum(EncryptHandler.decryptTwo(user.getIdCard()));
+
+        //缓存用户信息
+        redisCache.setCacheObjectTenant(tenantId + ":" + key, JSONObject.toJSONString(phoneBo), 12, TimeUnit.HOURS);
+        return url;
+    }
+
     private void updateHandoutsId(Long goodsId, Long tenantId, Long handoutsId) {
         baseMapper.updateHandoutsId(goodsId, tenantId, handoutsId);
     }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/mapper/OrderMapper.java

@@ -68,4 +68,6 @@ public interface OrderMapper extends BaseMapper<Order> {
     List<TopOldOrderInvoiceVo> getOrderInvoiceList(String orderSn);
 
     List<String> getBusinessNameBySn(String orderSn);
+
+    Long getOrderGoodsByBo(@Param("goodsId") Long goodsId,@Param("userId") Long userId);
 }

+ 29 - 5
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java

@@ -732,11 +732,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 throw new CustomException("商品不存在", 510);
             }
             //校验是否有重复商品
-            if (StringUtils.isNotBlank(g.getSevenYear())){
+            String businessName = iGoodsService.getGoodsBusinessName(g.getGoodsId());
+            if (StringUtils.isNotBlank(g.getSevenYear()) && businessName.contains("继续教育") && businessName.contains("施工现场专业人员")){
                 Long count = iOrderGoodsService.countOrderGoodsByYear(g.getSevenYear(),g.getGoodsId(),bo.getUserId());
                 if (count > 0){
                     throw new CustomException(goods.getGoodsName() + ",请勿重复购买相同年份的商品");
                 }
+            }else if (businessName.contains("考前培训") && businessName.contains("施工现场专业人员")){
+                Long count = baseMapper.getOrderGoodsByBo(g.getGoodsId(),bo.getUserId());
+                if (count > 0){
+                    throw new CustomException("请勿重复购买相同的课程");
+                }
             }
 //            if (goods.getGoodsStatus() != 1) {
 //                throw new CustomException(goods.getGoodsName()+"商品已下架,请重新选择商品下单", 510);
@@ -1354,11 +1360,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 throw new CustomException(goods.getGoodsName() + "商品已下架,请重新选择商品下单");
             }
             //校验是否有重复商品
-            if (StringUtils.isNotBlank(g.getSevenYear())){
+            String businessName = iGoodsService.getGoodsBusinessName(g.getGoodsId());
+            if (StringUtils.isNotBlank(g.getSevenYear()) && businessName.contains("继续教育") && businessName.contains("施工现场专业人员")){
                 Long count = iOrderGoodsService.countOrderGoodsByYear(g.getSevenYear(),g.getGoodsId(),bo.getUserId());
                 if (count > 0){
                     throw new CustomException(goods.getGoodsName() + ",请勿重复购买相同年份的商品");
                 }
+            }else if (businessName.contains("考前培训") && businessName.contains("施工现场专业人员")){
+                Long count = baseMapper.getOrderGoodsByBo(g.getGoodsId(),bo.getUserId());
+                if (count > 0){
+                    throw new CustomException("请勿重复购买相同的课程");
+                }
             }
 
             if (ObjectUtils.isNotNull(g.getMailSign()) && g.getMailSign() == 1){
@@ -1784,11 +1796,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 throw new CustomException(goods.getGoodsName() + "商品已下架,请重新选择商品下单");
             }
             //校验是否有重复商品
-            if (StringUtils.isNotBlank(g.getSevenYear())){
+            String businessName = iGoodsService.getGoodsBusinessName(g.getGoodsId());
+            if (StringUtils.isNotBlank(g.getSevenYear()) && businessName.contains("继续教育") && businessName.contains("施工现场专业人员")){
                 Long count = iOrderGoodsService.countOrderGoodsByYear(g.getSevenYear(),g.getGoodsId(),bo.getUserId());
                 if (count > 0){
                     throw new CustomException(goods.getGoodsName() + ",请勿重复购买相同年份的商品");
                 }
+            }else if (businessName.contains("考前培训") && businessName.contains("施工现场专业人员")){
+                Long count = baseMapper.getOrderGoodsByBo(g.getGoodsId(),bo.getUserId());
+                if (count > 0){
+                    throw new CustomException("请勿重复购买相同的课程");
+                }
             }
 
             if (ObjectUtils.isNotNull(g.getMailSign()) && g.getMailSign() == 1){
@@ -2001,11 +2019,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 throw new CustomException(goods.getGoodsName() + "商品已下架,请重新选择商品下单");
             }
             //校验是否有重复商品
-            if (StringUtils.isNotBlank(goods.getSevenYear())){
-                Long count = iOrderGoodsService.countOrderGoodsByYear(goods.getSevenYear(),g.getGoodsId(),bo.getUserId());
+            String businessName = iGoodsService.getGoodsBusinessName(g.getGoodsId());
+            if (StringUtils.isNotBlank(g.getSevenYear()) && businessName.contains("继续教育") && businessName.contains("施工现场专业人员")){
+                Long count = iOrderGoodsService.countOrderGoodsByYear(g.getSevenYear(),g.getGoodsId(),bo.getUserId());
                 if (count > 0){
                     throw new CustomException(goods.getGoodsName() + ",请勿重复购买相同年份的商品");
                 }
+            }else if (businessName.contains("考前培训") && businessName.contains("施工现场专业人员")){
+                Long count = baseMapper.getOrderGoodsByBo(g.getGoodsId(),bo.getUserId());
+                if (count > 0){
+                    throw new CustomException("请勿重复购买相同的课程");
+                }
             }
 
             if (ObjectUtils.isNotNull(g.getMailSign()) && g.getMailSign() == 1){

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserService.java

@@ -151,6 +151,8 @@ public interface IUserService extends IService<User> {
 
     User getByCardNoTenant(String idCard);
 
+	User getByCardTenant(String idCard,String tenantId);
+
 	Map<String, Object> importSevenUser(List<UserPeriodImportBo> userList);
 
     void userDataImportUp(List<UserDataImportBo> customerBos);

+ 18 - 0
zhongzheng-system/src/main/resources/mapper/modules/order/OrderMapper.xml

@@ -701,4 +701,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
           AND og.order_sn = #{orderSn}
     </select>
 
+
+    <select id="getOrderGoodsByBo" resultType="java.lang.Long" parameterType="java.lang.Long">
+        SELECT
+        COUNT(*)
+        FROM
+        `order` o
+        LEFT JOIN order_goods og ON o.order_sn = og.order_sn
+        WHERE
+        o.user_id = #{userId}
+        AND og.goods_id = #{goodsId}
+        AND og.pay_status != 1
+        AND og.refund_status != 2
+        AND UNIX_TIMESTAMP(
+        NOW()) <![CDATA[ >= ]]> og.service_start_time
+        AND UNIX_TIMESTAMP(
+        NOW()) <![CDATA[ <= ]]> og.service_end_time
+    </select>
+
 </mapper>